{char * const p;char const * p;const char *p;
上述分别是什么?上述三个有什么区别?
问题一:什么是const?
const 英文解释是:常量,常数,固定。在C语言中的作用:常量化xx,将xx作常量
问题二:p,*p,&p,&(*p)分别是什么?代码解释:)
#include <stdio.h>
int main()
{
char ch = 'a'; //开辟一片 char型 的空间,给它取名为 ch ;保存 字符a 在这一片空间
char *p = &ch; //开辟一片 char*型 的空间,给它取名为 p ;保存 ch的地址 在这一片空间
printf("ch = %c\n",ch); //所谓的 ch ,其实是说: 名字为ch的空间里面保存的值
printf("&ch = %p\n",&ch); //所谓的 &ch,其实是说: ch的地址
printf("p = %p\n",p); //所谓的 p ,其实是说: p空间里面保存的值,也就是 ch的地址
printf("&p = %p\n",&p); //以此类推
printf("*p = %c\n",*p);
printf("&(*p)= %p\n",&(*p));
return 0;
}
/*result
ch = a
&ch = 0xbf90448f
p = 0xbf90448f
&p = 0xbf904488
*p = a
&(*p)= 0xbf90448f
*/
{char * const p;
思路: const 修饰 p, p 是指针变量, 即指针变量p被常量化/只读化
内涵: 指针变量p 保存的地址 是不可变的
指针变量p 保存了地址, 这个地址保存的值 是可变的
延伸: 指针变量p 保存了地址, 这个地址保存的值 可以 *p = 'b'; 可以 ch = 'b';
}
{char const * p;
思路: const 修饰 *p, *p 是指针变量指向的值, 即指针变量指向的值被常量化/只读化
内涵: 指针变量p 保存了地址, 这个地址保存的值 是不可变的
指针变量p 保存的地址 是可变的
延伸: 指针变量p 保存了地址, 这个地址保存的值 不可以 *p = 'b'; 可以ch = 'b';
}
}