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语言规则,指针加上常数后,类型不...

\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

有了int a[5],*p;,p=&a;显然就是错误的。int a[5],*p;说明了a和p都是int *型指针,只是a是常指针,p是指针变量,那么p=a;就合情合理;&a是指向a[5]的指针,与它类型匹配的是int (*)[5],而不是int *。所以p=&a;的等号两边类型不匹配,编译都过...

因为元素个数从数组的下标a[0]开始算咯 例如你定义一个一维数组a[5]={1,2,3,4,5} 解释:a[5]是一个有5个元素的一位数组! 分别为a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[4]=5 这时如果多出一个a[5]的话,就会溢出,因为你只定义了一个5个元素的一位数组...

首先呢,a是二维数组,不解释。 然后呢,p是一个指针,什么样的指针呢,就是指向一维数组的指针,而且这个一维数组的元素个数呢是5. 然后呢,p=a;就是把p指向a数组。 分析选项: A p+1 .因为p是一维数组指针,所以p每+1就是+1行。错误。 B *(p...

如果是int a[10];这里的a是数组的首地址,但是const int*类型,也就是常量指针,它的指向不能修改,所以a++是不允许的。 如果有int *p = a; p++就是指向了下一个整形的地址。 p[5]就是第6个元素。(而不是地址了,是地址对应的整形数)

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

char a[5]; char *p = a // 相当于 char *p = &a[0],区别只是两种不同的写法

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