...* p = a[2]; 为什么p[0]可以访问,p[1]无法访问?
int*p是定义一个指针,也就是定义一个地址,可以这么说,但是你令这个地址等于a【2】,这时我想系统应该会提示你一个警告,翻译过来就是两者是不一样的变量,一个是地址,而另外一个是数值。两者不能建立相等关系,此赋值语句也就不成立。所以,我在自己电脑里测试的结果是p【0】也无法访问。所以,...
C语言 int 是a[5],*p;定义后,p=a[2]+2为什么不合法
所以,p=a; 或p=&a[0]是正确的,表示指针p指向数组的首元素。
...1、int a=5,*p=a; 2。int b=5,*p=b; 3. int c=5,p=&c;
1 先定义变量a 并将a值赋为5,接着将指针p所指地址的变量置为a(5)此后对p赋值的操作与a无关 2是定义指针p的同时将p指向b,对p的赋值相当于对b赋值 3 是先定义变量c并赋值为5,接着将指针p指向变量c(此后对p的赋值操作相当于对c操作,如*p = 12相当于c=12)2,3可以不过应完整点(只...
若有下列定义,则对a数组元素地址的正确引用是( )。 int a[5],*p=a;
【答案】:D 本题考查数组元素的地址的引用。A 中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a [0]、a[1]、a[2]、a[3]、a[4],所以引用错误(注:数组元素下标从0开始);B中,*a+1指的是将数组a的第一个元素加1;选项C中,不存在这种引用方式;D中,&a[0]引用的是数组...
c语言指针问题void main() int a[5],*p=a;printf("%x\\n",a);printf...
没错 结果描述如下:printf("%x\\n",a); 输出数组a的地址 printf("%x\\n",p); 输出p的地址,此处等于a p++;printf("%x\\n",p); 输出p的地址,因为递增了1,所以p此处为 a[1]的地址
C语言中数组int a[5]通过a[0]的地址002FF1(随意写)怎么算出a[1]的...
int a[5];这是一段连续的存储空间,所以已知a[0]的地址,那么加上int的大小就是a[1]的地址了,不同的机器int的大小不用,可以用sizeof()函数来查看。楼主要注意的是,你声明的这个数组,它的空间是连续的,a[0]的地址,其实只是第一个存储单元第一个字节的地址而已。
int a=5,*p1=&a,*p2;则不能正确赋值的语句是?
把它分开来看:int a = 5;int* p1 = &a;int* p2;选项A.*p1 = 10:因为p1存着a的地址,所以*p1就是a, 相当于a = 10,所以没问题 选项B.p2 = &a:因为和p1的赋值方式一样,都是a的地址,所以可以通过编译 选项C.*p2 = 10:p2还没初始化,属于野指针(也就是不知道指向那块内存...
c语言 为什么(*p)[5] 里的*p为什么不能赋值
可指向一个 “数据块”,这个数据块由5个整型数据组成,在此时,p还是个野指针,即:没有指向任何地址int a[3][5];p=a; \/\/p指向数组a的第一行*p=a[1]; \/\/这是错误的用法,*p是指一个数据块,所以,*p相当于一个数组(5元素数组)首地址,是个“静态值”,不能被赋值修改} ...
若有定义:int a[5], *p=a;则不能正确表示数组元素a[i]的是 A.*(a+i...
不能正确表示数组元素a[i]的是D。D把元素值作为地址取其中内容了。
关于C语言,*p=a[0]是什么意思呀?
对于二维数组a来说:int a[5][2]; a[0]是第0行起始地址指针 因此:int *p=a[0];相当于int *p; p=a[0];的合写,即p指向a数组第0行起始位置 相当于写:int *p=&a[0][0];