答案是 C) p+=2,*p++。关于P+=2指向的是数组的第二个元素,是因为p++操作在p+=2操作之后,它将指针偏移2个元素,也就是p最终指向数组a的第三个元素,即a[2],而*p++表示取出p所指向的元素并且p++,因此最终得到的结果是a[2]=3。单独的p指向的是数组a的第一个元素,即a[0]=1。
int a[5]={2,4,6,8,10},*p,**k;p=a;//p指向a数组,p保存了a数组的首地址。a[0]是数组的首元素,所以*p的值就是a[0]的值。k=&p;//k指针指向p,k保存了p的地址。(k可以成为指针的指针)printf("%d",*(p++));//表达式“*(p++)”整体的值相当于*p的值,就是a[0]的值...
我也来回答一下,个人见解,欢迎指教。int a[5],*p;p=a;p=&a[0];p=&a int a[5];//a是指针常量,表示的是数组首元素的地址,即a=&a[0]。int *p=a;p=&a[0];//因为a=a[0],所以p=a 和p=&a[0]是等价的。p=&a//int *p,p是一个指向int类型的指针,而&a表示的是指向...
int a[][4]={1,2,3,4,5,6,7,8,9,10} 这么写的话,实际上a的构造是:int a[][4]={ {1,2,3,4},{5,6,7,8},{9,10,0,0},{0,0,0,0}};p=*(a+1);也就是p指向a第1行的行首元素,也就是*p=a[1][0]=5 所以9的表达式是,a第2行的行首元素,也就是a[2][0]...
p=a;那么p的值也是&a[0];p和a都表示地址,所以*就是取地址对应的值。(a+2)就是首地址值往后+2的地址,也就是&a[2],那么*(a+2)就是a[2]的值2。同理*(P+2)也是a[2]的值2。p[3]是不对的,p[3]不是地址是值。注意:这里p和a值一样,但意义不同。p是指针值可以改变,a...
这里,++p相当于*p = *p + 1。这里的区别在于,++p是先执行*p = *p + 1,然后再使用*p的值;而*p++则是先使用*p的值,然后执行*p = *p + 1。这种细微的差别,在实际编程中可能会导致不同的结果。例如,假设我们有一个数组a = {1, 2, 3, 4, 5},我们使用指针p指向数组的第一个...
(++p)=*(a+1)=a[1]=3 所以(*(++p))++=3+1 p=a[0]=1 所以*p++=2 a[2]=5
include <stdio.h> //这个是头文件 void main() //这个是主函数 { int i, a[5]; //定义一个变量,一个数组;int *p=a; //这句话的意思就是取数组的首地址类似于 p=&a[0];for (i=0; i<5; i++,p++ ) //对i变量的控制使他的值小于数组的长度5。p++...
/* HELLO.C -- Hello, world */#include "stdio.h"#include "conio.h"main(){ int a[5] = {0}; int i = 0; for (; i < 5; i++) { scanf("%d", &a[i]); } printf("%d %d %d %d %d", a[0], a[1], a[2], a[3], a[4]); getchar...
include <stdio.h> void main(){ int a[]={0,2,4,6,8,10};int *p=a+1;printf("%d",*(--p));} 运行下看看就知道了,整型指针一开始就指向了a[1]也就是2,++P就是4了 只能是d