嵌入式C语言4.2 C语言内存空间的使用-指针与修饰符:const,volatile,typedef

时间:2021-09-15 14:58:36

const:变量,只读【不能变】

内存属性:

1. 内存操作的大小

2.内存的变化性,可写可读

char *p;

const char *p;     描述字符串,p指向的内容是只读的,不可再次修改

char const *p;

char * const p;   硬件资源的定义

char *p const;

const char *const p;

举个例子:

嵌入式C语言4.2 C语言内存空间的使用-指针与修饰符:const,volatile,typedef

嵌入式C语言4.2 C语言内存空间的使用-指针与修饰符:const,volatile,typedef

虽然在定义指针p的过程中,前面没有写const,但是默认了他是只读属性,不能对访问内容修改

这个segmentation fault就是非法访问报错的!

正确写法:

嵌入式C语言4.2 C语言内存空间的使用-指针与修饰符:const,volatile,typedef

嵌入式C语言4.2 C语言内存空间的使用-指针与修饰符:const,volatile,typedef

 2. volatile  主要应用于硬件中

防止优化指向内存地址

char *p;

volatile char *p;

3. typedef  别名

什么类型  变量名称;

xxx a;

char *name_t;      // name_t 是一个指针,指向了一个char类型的内存

typedef char * name_t;  //name_t是一个指针类型的名称,指向了一个char类型的内存