为您找到"
int a=2;*p=&a,*q=p;中*q=p是什么意思啊?
"相关结果约100,000,000个
p*n是非法的。指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。题目中int n=2,*p=&n,*q=p 定义整型n,p是一个指向n的指针,它的值为n的地址。q是一个指针,q的值和p的值相同,也就是它俩是同样的地址。p=q使得p的值...
p*n是非法的。指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。题目中int n=2,*p=&n,*q=p 定义整型n,p是一个指向n的指针,它的值为n的地址。q是一个指针,q的值和p的值相同,也就是它俩是同样的地址。p=q使得p的值...
emmm,一楼的回答是对的。楼主看一下*q=p-2,你是不是把这个条件抄错了?习题上是不是*q=p+2 ①*p=&a[3],所以*p=4(这个不解释了)②A我们明确一个概念,就是a[10]这串位置是连续的。B假设i=*p(i为p所指的单元格的值)。*p=4,即i=&a[3]=4 Cp-2即p所在的地址往前推2单元...
p=q就是将二级指针p指向指针数组q的首地址,即*p指向的地址就是q[0]所指向的地址。所以p指向q[0]正确(即A正确)p+3就是q[3]的地址跟A类似,只是偏移了三个内存单元(即B正确)(p+3)与*q[3]等价都是指向q[3]所指向的内存地址单元,值都是一样的(即C正确)对于D,由于定义了*q[5]...
看看我下面的演示,你就知道那只是个巧合而已(5并不是数组里面的数字哦,两个地址差,16进制地址相减结果是0x14,换算成十进制就是20,int每个占4byte,所以20/4=5):
p和q是两个struct stu类型的指针,单纯的传递一个地址,没什么特殊的。
如果去掉q,*p为6 否则整个程序会崩溃,因为q指向的地址是NULL,无法进行复制操作。
指针的移动是以这个指针指向的变量类型的长度sizeof(type)为单位的,如果这个类型长度为4,那么指针增加1,就是向后移动4个字节。反过来计算两个指针之间距离的时候,也是以sizeof(type)为单位的。另外,你这个代码的结果,q-p应该是2,而不是1 ...
int a,*p,*q; // 定义一个 int 型变量 a, 和两个指针变量 p , qp=q=&a; // 把 a 的内存地址 赋值给 q 和 p 。意思就是 q , p分别都是指向 a
数组元素为:0 1 2 3 4 5 a可以当作是数组的指针,a所指元素是0。p=a+5,那么p所指元素是5。q=p++,p参与运算后再加1,所以q所指元素也是5。