prss.net
当前位置:首页 >> 有一下程序 mAin() {int A[3][3], *p, i;} >>

有一下程序 mAin() {int A[3][3], *p, i;}

#include main() { int a[3][3],*p,i; p=&a[0][0]; for(i=0;i

p指向 a[0][0], 所以 *p和a[0][0]一样, 也与 p[0]一样. 但C/C++是 row-major 的排法, a[0][0], a[0][1], a[0][2] 之後紧接者 a[1][0], a[1][1], ...., 最後是 a[2][2]. 所以 p[1]和a[0][1]一样, p[2]和a[0][2]一样, p[3]和a[1][0]一样 .... p[8]...

int *p[3] p是一个数组,此数组有3个元素,每个元素都是int*类型,也就是指向整型数据的指针类型。 int a=10,b=20,c=30; int*p[3]={&a,&b,&c}; 而int(*p)[3]中的p是一个指向数组的指针,此数组有3个int类型的元素。例如: int a[3]={1,2,3}; 那...

应该是输出1。程序是这样的,先定义了一个数组a,并赋值。然后定义了一个指针数组sum。在for循环中,使用了 num[i]=&a[i];语句,也就是,指针数组的每个元素分别指向了数组a的每个元素。前面定义的p,是指向指针的指针,也就是p指向了一个地址,...

输出1,6.因为本身数组名也是一种指针,其指针类型与数组类型相同。数组名指针指向的内容就是数组的第一个元素,也就是下标为0的元素。那么让一个指针等于数组名,其实就是让这个指针指向数组第一个元素也就是下标为0的元素。所以*p=a[0],*(p+3)=...

输出结果为60。 简单说p和a是一个东西。也就是说把p换成a结果也是一样的。 具体解释一下: 二维数组的结构是这样的:a[3]这个第二维数组记录的是第一维数组的开始地址。即,a[0]的值和(&a[0][0])的值是一样的。a[1]的值和(&a[1][0])的值是...

p,q为两个指针,开始是分别指向a,b数组的首地址。 重点看if那句,意思是当(p+i)地址的值和(q+i)的值相等时,x=这个值*2 什么时候相等呢,3的时候 因此x应该等于6 选d

程序运行后的输出结果是: A.运行后报错 因为,虽然定义了指针*q,但是q的初始值为NULL;在此情况下为*q赋值,就会出错。程序停止运行。

main( ) { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2; //*p=&a[3]把a中的3索引号地址给指针p,3索引号处为4,因为索引是从0算起 //*q=p-2把p的地址减2个int位,即1处的索引号地址给指针q,1处的索引号处的值为2 printf("%d\n",*p+*q); ...

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