mshd.net
当前位置:首页 >> 在C语言中A是一个数组,*p=A+5有语法错误吗 >>

在C语言中A是一个数组,*p=A+5有语法错误吗

是否有错误,取决于p的类型。 a是数组,那么a的基础类型为A,则根据a的维数,如果是一维数组,那么a的类型为A*, 二维数组,A的类型为A**,依次类推。 无论具体是什么形式,最终a的类型设为P。 这样a+5,根据C语言规则,指针加上常数后,类型不...

指针+1是+指针指向空间大小 sizeof(char)是1对应是加1*5, int *的话就是4*5

\0 因为*(p+5)指的是数组中的第五个元素,数组a【10】只定义了前4个元素,后面没有定义的系统自动认为是\0

当a为数组名时,可以当做一维指针进行取值运算,但是由于数组名等同于常量指针,所以不可以对数组名进行赋值运算。 所以当a为数组时, a=任意表达式 这样的计算都是非法的。 而a++,等效于a=a+1, 所以这种表达式一样是非法的,编译的时候会报错。

假设p = a; 则*p = a[ 0 ] = 1 *p + 1 = a[ 0 ] + 1 = 2; p + 1 = &a[ 1 ] //这里的 p + 1 是指针p的指向往后挪了一位 因此 *(p + 1) = a[ 1 ] = 3

表示指针p的内容为变量a+5的值 譬如a的值是1,那么*p的值就是6,p这个指针存放的内存空间存放的数就是6

如果定义int (*p)[n];p1=a;p1++后,p指向a[1][0]; 则p+j将指向a[0]数组中的元素a[0][j]。 由于a[0]、a[1]┅a[M-1]等各个行数组依次连续存储,则对于a数组中的任一元素a[i][j],指针的一般形式如下: p+i*N+j,相应的如果用p来表示,则为*(p+i)+j...

A:下标越界,数组大小为5时,下标范围为0-4 B:a+2是数组第3个元素的地址 C:越界,类似A D:正确

元素组成了数组,数组的定义为 , int a[10]; 其中 int 为类型,即整型(还有字符型 char 和float 实型等) a 为数组名 [] 为下标符号,里面的数字常量为 数组的第几号成员元素。 例如 a[0]为 数组a[10]的第一号成员元素。 这里有点要注意的是,...

首地址, char a[5], 这样声明就指明a 是首地址,字符的话应该写 'a'

网站首页 | 网站地图
All rights reserved Powered by www.mshd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com