C 指针 【帮帮我!!我昏头了!!!】

来源:百度知道 编辑:UC知道 时间:2024/05/10 11:09:11
为什么可以这样 char *a="ddddddd";
这样和 char *a,b[]="ddddddd"; a=b; 的区别是什么
为什么 int *a=11111111; 这样不可以

还有如果有关于指针的好的学习资料 发下 谢谢

呵呵,*a的意思是a指向了一个内存地址,也就是说他的值是一个内存空间中的地址,char *a="ddddddd";表示从这个地址开始分配连续空间,每个空间都存储一个字符型变量。b[]="ddddddd"; 表示b是一个字符型数组,它的长度由初始化的变量赋值所决定。
int *a=11111111; 是不可以的,因为上面已经说过了,*a的意思是a指向了一个内存地址,难道a指向的地址是11111111吗?这是不合理的。是不是?

呵呵 由一个被指针搞晕的哥们
其实*a=11111是对的,只是看你在什么时候用
指针是一个地址,是一个为未实例化的对象是吗?
那么我问你下
int *a;
*a值是多少?
行不通吧?
指针必须指向一个实际意义的变量才能进行和普通变量一样的操作!这样讲是很麻烦的,我也倍这个困惑过,就解决不掉这个错误。总之别在未实例化指针当普通的变量用!
先给你说下过程 有兴趣再讨论
这个是对的
int a(假设a的地址为CCCCCCCCC)
int *b(假设b的地址为DDDDDDDDD 注意,是指针变量的地址!,在DDDDDDDDD这个地址内储存的地址为空)
b=&a;(b指向a的地址,也就是说b的地址不变,还是DDDDDDDDD,但是DDDDDDDDD地址里面的值为CCCCCCCCC)
所以,接下来你*a=11;就相当于把11放进地址为CCCCCCCCC的内存区域了
一大队地址地址地址的是不是很乱?
我QQ107395975

char *a = "aasdwqeq" /*必须要加引号*/
char a[]="ddddasd"

前者声明是指针,后者声明为数组,如果根据上下文,前者和后者不一定相通,但是作为 函数 形参的时候 是完全相通的

如果 int *a = &1111111 是可以的 &是取地址符不加就出错