为您找到"
*p=&a,谁能帮我清楚的说一下,*p、p、&a和a之间的联系和区别。
"相关结果约100,000,000个
如图。BCD选项都是地址。&是取地址符号,&x就是x变量的地址。*是取出地址里的值。所以*&x就是x的值 取地址运算符& 格式:&变量名 含义:取出存放变量的地址 间接运算符 格式:*指针名/地址名 含义:取出存储在地址中的对应值
A:p指向a的地址,*p自然为1;B:指针数值可以表现为数组的形式,第一个元素对应p[0];C:*&a等同于*p;
&n);test1(&p); printf("%d\n",n);free(p);return 0;}运行结果:int n=10;int *p=&n;// p等于n的地址 *p可以操控n的数值(此时的*p等于n的数值)int **pp=&p;// pp等于p的地址 *pp等于p指向的地址(即n的地址) **pp可以操控n的数值(此时的**p等于n的数值也等于*p的值)...
这个输出的是a的值。因为p存放的是a在内存中的实际地址,*p是取内存地址中相应的值。
p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值!例如:int i=10; //定义了一个整型变量 int *p=&i; //定义了一个指针指向这个变量 int **p1=&p; //定义了一个二级指针指向p指针...
这两种不能等同,第一种好理解,就是p指向a的地址,所以*p 和 就是a的值,第二种,是新手常常犯的错,p没有指向任何地址,是随机值,就给这个地址赋值,轻会导致内存错误,重则导致系统奔溃。如果要写printf("%d",p );前面必须要给p赋值,如下:int p ;int a=5 ;p= &a ;这样p指向了a,...
正确答案是 8 a+=b,b+=*p,*p+a 是一个逗号表达式,逗号表达式的值是最后一个式子 即 p+a 的值。先计算 a+=b ,即 a=1+1=2 (因为 b 是 a 的引用,b 和 a 是同一个值)再计算 b+=*p ,即 b=2+2=4 (p是指针,指向 a 的内存地址,*p 是取指针p的值,刚才a的值已经为2)...
printf("%c",**p-1);因为p在上一次输出语句中自加了一次,那么这时p就指向了下一个字符串的位置(即:p指向了t),而**p表示的是一个值(即:**p=t),再加上**p-1也就是t-1,而t-1在ASCII码中表示的是s,又因为%c是输出一个字符因此就输出一个s 那么最后结果就是nes了 注:a[0]...
&n是一个地址 char* 表明这个地址是指向一个char 如果不加* 那么系统会将这个地址认作一个char数 而不是一个指向char数的地址