1、const介绍
const - const修饰指针,可以使指针是一个常量,防止指针被误改,或使指针指向的值是一个常量。
通过这个定义我们知道const意味着只读(不能变),对于int *p而言const放在不同地方,不能变的东西也不一样。
const int *p; //指向常量int的指针 和字符串有关 “hello world” 描述字符串的门牌号
int const *p; //等同上
int * const p; //指针自身是常量 指向一个固定地址,但是地址里存放的内容是可变的。
类比硬件资源,比如说内存焊接在单片机上不能移动,但是存 放的内容是可变的
int*p const;//等同上
const int*const p ROM
2、举例
#include <stdio.h>
int main ()
{
char *p = "hello world!\n";
printf("the one is %x\n",*p);
*p = 'a';
printf("the %s\n",p);
return 0;
}
1. 定义char指针p,初始化指向字符串常量"hello world!\n"
2. 打印*p,也就是字符串第一个字符'h'的ASCII码值0x68
3. 在第4行,*p = 'a',试图修改字符串中的第一个字符为'a'
4. 但是字符串常量在内存中是只读的,不能通过指针修改其值
5. 所以第4行的*p = 'a'是一个无效操作,不会对原字符串造成修改
6. 第5行打印字符串p,输出仍然是原字符串"hello world!\n",而不是被修改后的值