*(p[0] 1) 表示哪个数组元素
来源:学生作业帮助网 编辑:作业帮 时间:2024/09/30 12:39:45
A:下标越界,数组大小为5时,下标范围为0-4B:a+2是数组第3个元素的地址C:越界,类似AD:正确
这个就是a[0][0]里面的内容加1再问:哦如果是数组元素就是一个值了吧?那请问下,如果是a[0]+1呢那表示什么呢?再答:那就是a[0][1]罗
p[0]=a[1]是将a[1]数组的地址赋值给了p[0]为了更好的理解,我们定义一个int*q;q=p[0];这样*(p[0]+1)就等价于*(q+1)了,由于q是int型的指针并指向的a[1]的第0
因为数组的下标是从0开始的,也就是说a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[5]=6,a[6]=7,a[7]=8,a[8]=9,a[9]=10.所以B不对;p和a都是指向数组a说地
一个是声明时初始化,一个是先声明后赋值,在C语言里两者等价.更好的写法应该是int*p=a;因为C语言数组名等于首个元素的地址,也就是a==&a[0]
(*q)[3]和*p[3]的区别!q和p的区别在于q是一个(指针)变量p是一个数组q是一个指针,不知道你学了没,不过指针指向的变量类型特别,是一个含有三个元素的一维数组p这样来理解p是一个含有三个元素
要知道p是如何定义的,初值是多少,才能知道是哪个数.再问:*p[3]没初值再答:怎么可能呢?p连类型都没有,也没初值?如果定义是int*p[3];说明p的内容是指针如果定义是int(*p)[3];说明
#includevoidmain(){inta[]={1,2,3},*p[3];p[0]=&a[0];p[1]=&a[1];p[2]=&a[2];printf("%d%d%d",*p[0],*p[1]
答案是Dp[i]是数组a[]的第i+1个元素,&p[i]即取数组a[]的第i+1个元素的地址,故&p[i]表示数组元素地址.A错,a+1本身就是数组第二个元素的地址,再取地址编译报错B错,a是数组名,
privateArrayListGetNumArrayList(){ArrayListal=newArrayList();ArrayListbl=newArrayList();for(inti=0;i
(1)估计C月是8月?天热喝水多,洗澡勤等(2)预测小明家接下去的一个月水费是60元.十月份了,秋天到了,天气凉了.再问:是无法估计要理由是什么OK你到底会不会啊再答:这是数学与实际结合的问题,叫估算
f(array,6);//这是函数调用,将数组array的首地址传到子函数中voidf(intp[],intn)//这里的p就是array{inti;for(i=0;i再问:f(array,6);中a
假设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[3][2],那你理解的p[i*n+j]确实是地址,指向一个一维数组.“*[p+i*n+j]才是该元素的值啊!”有个小错误,这里括号应为圆括号才是值.你的理解无误!
首先B(2,5,:)表示三维数组B的2行,5列,上的所有元素,如上为1:3即为1,2,3,因此该数组为2*5*3的数组
有种用法就是用数组开头指针(比如p=&(a[0]))来代表数组中元素的.比如*p就是指向a[0],*(p+1)就是指向a[1],等等.那么a[4]的指针就是*(p+4)这样就可以理解了吧?p2=p+4
因为a[3][2]是表示数组的第21个元素*(p+20)也是表示第21个元素A,C,D的表示是错误的
//intx[10],*p=x;,则*(p+5)表示().intx[10],*p=x:表示定义了一个数组,让p指向了x这个数组,数组名是地址常量,把地址常量保存在指针变量里边了.而这时候指针可以写成数