【C 语言】const 关键字用法 ( 常量指针 - const 在 * 左边 - 修饰数据类型 - 内存不变 | 指针常量 - const 在 * 右边 - 修饰变量 - 指针不变 )

简介: 【C 语言】const 关键字用法 ( 常量指针 - const 在 * 左边 - 修饰数据类型 - 内存不变 | 指针常量 - const 在 * 右边 - 修饰变量 - 指针不变 )

文章目录

一、const 普通用法

二、常量指针 ( 指向 常量 的指针 | 被指向的内存不能被修改 )

三、指针常量 ( 指针不能被修改 )

三、指向 常量 的 指针常量

四、const 在 * 左右的意义





一、const 普通用法


const 关键字 在 C 和 C++ 中的表现不同 , 本篇博客主要介绍 C 语言中的 const 用法 ;



const 的用法 : 下面的 2 22 个写法作用相同 , const 可以在 数据类型 前面 , 也可以在 数据类型 后面 ;


// 下面两个 const 用法相同
const int a;
int const a;






二、常量指针 ( 指向 常量 的指针 | 被指向的内存不能被修改 )


下面的 c 是 指向 常量字符 的指针 , const char 表示 常量字符 , const char * 表示 指向 常量字符 的指针 ;


该指针 指向的 内存空间 不能被修改 ,

指针可以被修改 ;

// 指向 常量字符 的指针 
const char *c;


上述代码 指针指向的 内存 是常量 ; 常量指针






三、指针常量 ( 指针不能被修改 )


下面的 d 是 指向 字符 的 常量指针 , char * 表示一个指向 char 字符的指针 , 后面加上 const 表示该指针 是 常量指针 ;


该指针 指向的 内存空间 可以被修改 ,

指针 不能 被修改 ;

char * const d;


上述代码 指针 是常量 ; 指针常量






三、指向 常量 的 指针常量


下面的 c 是 常量指针 指向一个常量 , 指针 和 指针指向的内存 , 都不能被修改 ;


const char * const c;






四、const 在 * 左右的意义


普通的数据类型 , const 在数据类型左右作用相同 ;



指针数据类型 , const 在 * 左侧是 常量指针 ( 内存不能修改 ) , const 在 * 右侧是 指针常量 ( 指针不能被修改 ) ;


指针常量与常量指针 : 需要查看 const 修饰的是 指针变量 , 还是 修饰 指针变量 指向的内存空间 ;


const 在 * 右边 ( 指针常量 | const 修饰的是变量 ) : const 修饰的是 指针变量 , 如 char * const d , const 修饰的是 char * , 指针不能被修改 ; 这是 指针常量 ;

const 在 * 左边 ( 常量指针 | const 修饰的是数据类型 ) : const 修饰的是 指针变量 指向的内存空间 , 如 const char *c , const 修饰的是 char , char 数据不能被修改 , 这是 常量指针 , 指向常量的指针 ;


const 修饰的是右边的内容 ,


右边是 变量 , 相当于 const 在 * 右边 , 指针常量 , 指针不能修改 ;

右边是 数据类型 , 相当于 const 修饰的是 内存中的数据 , 指针指向的内存不能被修改 ;


目录
相关文章
|
14天前
|
程序员 C语言
C语言库函数 — 内存函数(含模拟实现内存函数)
C语言库函数 — 内存函数(含模拟实现内存函数)
24 0
|
25天前
|
编译器 C语言 C++
【C语言】memset()函数(内存块初始化函数)
【C语言】memset()函数(内存块初始化函数)
26 0
|
25天前
|
编译器 C语言 C++
【C语言】memcpy()函数(内存块拷贝函数)
【C语言】memcpy()函数(内存块拷贝函数)
42 0
|
16天前
|
存储 编译器 C语言
深入探索C语言动态内存分配:释放你的程序潜力
深入探索C语言动态内存分配:释放你的程序潜力
28 0
|
25天前
|
编译器 C语言 C++
【C语言】calloc()函数详解(动态内存开辟函数)
【C语言】calloc()函数详解(动态内存开辟函数)
25 0
|
25天前
|
存储 编译器 程序员
【C语言】内存的动态分配与释放
【C语言】内存的动态分配与释放
27 0
|
25天前
|
存储 前端开发 编译器
【C语言】memmove()函数(拷贝重叠内存块函数详解)
【C语言】memmove()函数(拷贝重叠内存块函数详解)
32 1
|
26天前
|
存储 编译器 程序员
【C语言】整形数据和浮点型数据在内存中的存储
【C语言】整形数据和浮点型数据在内存中的存储
15 0
|
27天前
|
存储 编译器 C语言
C语言3🔥:常用的数据类型
C语言3🔥:常用的数据类型
14 0
|
27天前
|
编译器 C语言
C语言2🔥:常量,输入与输出
C语言2🔥:常量,输入与输出
18 0