关于指针和值

来源:百度知道 编辑:UC知道 时间:2024/09/25 14:12:25
int i = 100;
int *p = &i;
short *q = p

*q=100吗?
我怎么觉得最后一句错了,应该是short *q=*p,这样*q才等于100,不知道我说的对不对,请高手指点一下,说一下道理。谢谢。
问一下,取指针的值怎么表示?*q表示地址指针q的值?

int i = 100;
int *p = &i; (将i的地址赋值给指针变量p)
相当于int *p; p=&i;
short *q = p (p是指针变量,存放的是地址,将地址传递给q这个指针变量)
相当于 int *q; q=p;

short *q=*p 这句话将i赋值给指针变量q,c语言规定指针变量只能存放地址,而i是个常量,所以short *q=*p是错的

*q表示指针指向的值

个人觉得这句话没有问题。
short * q 是一句声明语句,声明了一个名叫q的short指针。
而在声明语句后可以对其进行初始化,就是后面的= p
这句话说,声明一个名为q的指针,其初值和p相等,均为i的地址。那么,q 等于 &i,即*q 等于 100.
如果按照你写的,应该这样:
short * q;
*q = *p;
这样*q 等于 100
个人感觉,没有测试
我觉得我应该说清楚了吧。

分开来写就清楚多了
int i = 100;
int *p;
p = &i;
short *q;
q = p;

看出来了吗?
那其实q=&i,所以*q=i=100

你可以看作是c语言中的一种规定,指针可以在定义的时候初始化,就像int *p=q;
其实它等价与:
int *p;
p=q;

最后一句short *q = p定义了一个指针q并用另一个指针p指向它,但不能用short吧。
指针只能指向一个地址或者是0值或NULL,所以你的*q=100根本就是错误的。因为指针不能赋值给一个常数。
short *q=*p中用了求值运算符将p指针指向的值给了q指针,也是对指针赋予了常值,所以也是错误的。
我也刚学不久,不知道对不对。