不理解int *p = &n这句为什么行的通,哪位给我解解惑;
我理解:int n;int* p;
*p = n;
p = &n;
这些都能理解,指针等于指针,变量等于变量;
但是:
*p = &n;是行不通的我也理解;
而为什么:
int *p = &n;就行得通?
int *p = n;就行不通?
int *p=&n;
这句话也是对p赋值啊。。。 晕倒=== 等于 int *p = &n;这一句包括两个部分一个是整形指针变量声明,一部分是赋初值;前面的int *p=之中的*是表示变量类型的(因为前面int声明),并不是*p表示p指向地址里面的数值。这个问题应该是不难吧 吾醉梦醒 发表于 2013-12-6 15:13 static/image/common/back.gif
int *p = &n;这一句包括两个部分一个是整形指针变量声明,一部分是赋初值;前面的int *p=之中的*是表示变量 ...
int* p和int *p没区别??注意空格的位置! todd 发表于 2013-12-6 15:21 static/image/common/back.gif
int* p和int *p没区别??注意空格的位置!
没区别的 你只要记住 类型+变量int* 是类型 无论*跟int 还是跟p,int *p=&n,这里是声明的同事赋值,其实就是int *p,然后p=&n,理解了没 叁er 发表于 2013-12-6 15:42 static/image/common/back.gif
没区别的 你只要记住 类型+变量int* 是类型 无论*跟int 还是跟p,int *p=&n,这里是声明的同事赋值,其 ...
那这个问题我理解了,谢谢!
const (char*) pContent;和const (char) *pContent;是有区别的吧?怎么理解? 声明同时赋值语句。我的理解是声明了一个指针,赋值一个地址。。 todd 发表于 2013-12-6 15:21 static/image/common/back.gif
int* p和int *p没区别??注意空格的位置!
注意*的结合顺序,是左结合,int*这样才是对指针的正确声明(其实理解了,是否正确声明要分实际情况,主要看怎么理解,两种方式都没错),说的是要声明个整形的指针,*是现结合左边类型,从而说明p是整形的指针,建议看看c/c++中符号的优先级以及结合方向,就自然明白了. todd 发表于 2013-12-6 15:58 static/image/common/back.gif
那这个问题我理解了,谢谢!
const (char*) pContent;和const (char) *pContent;是有区别的吧?怎么理解 ...
加括号是有区别的,话说后面的那个是强制类型转换吧 哥给跪了!!貌似当年也问过别人这个问题:big 指针变量可以 用&进行赋值来指向 但不能直接指向到你想要的内存单元上 这样的话C就太强大也太危险了 int *p;这里是在定义一个变量,在定义的时候,*说明这个变量是指针类型。
*p不是在定义一个变量,而是在对变量p进行运算。不能根据这里的*说p就一定是指针,而应该理解为变量p的类型可以和运算符*一起使用。
同样道理,int a;这里实在定义一个"变量",[ ]说明这个"变量"是数组类型。a不是在定义变量,而是在使用变量。
综上,C语言在定义变量和使用变量的使用都使用*或[ ],但它们的意思不一样。 我也晕倒~~楼主还是 好好看下C语言的书再纠结也不迟。 谢谢各位的解答,我明白了一些了。 p是指针变量,而n是整型,当然不能直接赋值 int n;
int* p;
*p = n;//这句有问题,运行的时候可能会报错,因为p还没指向具体的内存地址,*p会返回一块随机4字节的内存空间 因为C是强类型的,既然p是int指针,那么给它赋值一定要是同类型的,或者经过类型转换,而n的类型是int,所以不行
int *p = &n;这里的*作用是声明将P设为一个指针变量,现在*p是一个指针变量,存放的是地址,所以可以吧n的地址赋值给P。
int *p = n;同上,*声明P是指针,P里面放的一定是地址。n是一个整形数据,不是n的地址。
p=&n;//p前面没有*,说明是对指针变量赋值,存的是n的地址,不是对p指向的地址存放数据。
*p=n ;//p前面有*,说明是对指针p所指向的地址赋值,存的是数据。
本帖最后由 amydog 于 2013-12-15 23:20 编辑
int *p = &n;就行得通? &n存放的是地址类型相同
int *p = n;就行不通? n存放的是某一个具体的数值,类型不同
int* 与 int* 中间有无空格 都是一样的
int * p 类型+变量名 int*是一个完整的
如果单独的写 *p=n 这样是可以的这是做运算
int *p=n 个人觉得编译器 会把int* 当做一个整体,照成类型不同出错
个人看法
页:
[1]