char a;
char* a;
char** a;
变量名实质上是地址的映射,在程序中有变量的地方执行两步操作:通过变量名也就是地址找到存储单元中的数据,然后根据程序代码对该内存单元进行操作。比如,
int a=100;
计算机根据变量名a找到内存单元中的某个字节,从该字节开始将100存储,int指明了装下100需要的字节数。
再比如,
printf(“%d”,a);
根据变量名a找到内存地址,printf函数处理该内存单元中的数据—格式化输出。
回到主题
不管char* a还是char** a,变量名a对应的内存单元存放的都是地址。
char*a=”hello world”; //正确,字符串本质是地址
printf(“%s”,*a);//将字符串输出;
如果是
printf(“%s”,a);//根据上面的分析,输出的是a的内容—字符串的地址,而不是字符串本身。
char** a
char* st=”hello world”;//正确,字符串常量本身就是地址,st为指针类型代表内存地址
//计算机在执行该代码的时候,取出st代表内存地址中存放的数据,然后
//对该存储空间进行处理,常量和变量的区别在于常量名对应的内存空间
//不能更改内容,而变量名对应的内存空间可以更改内容。
char** st1=& st;//st1为指针类型,变量名代表内存地址,区别char* st,st1代表内存地址中存储
//的数据是指针的地址
C指针了解
最新推荐文章于 2019-09-28 08:37:33 发布