为您找到"
数组问题 int a[5],*p;p=a;p=&a[0];p=&a;都是什么含义
"相关结果约100,000,000个
a地址 + 1 * sizeof( a 的类型)p[5] 在声明里表示 声明 p 是数组,它有5 个元素。例如: int p[5];p[5] 在语句里表示 下标变量,它是数组p里的第6个元素。 因下标 从 0 起始。 例如:p[5]=666;语句...
b=1 \0 x x …;注意,x可能为任何字符,因为在声明一个数组时不会初始化值,所以在运行exchange()后得到:a=3 2 1\0 x x x b=1 \0 x x x 故c= 4 2 x \0 x x 再运行exchange()得到c= x 2 4...
这题的关键在int *ptr=(int *)(&a+1);这一句上,&a表示取得数组a存储区域的首地址,再加1表示数组a存储区域的后的地址,这就使得ptr指针指向数组的最后一个元素后面的那个存储单元的地址,而ptr减1后,再进行数据...
数组和指针的关系 如果对声明数组的语句不太明白的话,请参阅<<如何理解c和c++的复杂类型声明>>, 数组的数组名其实可以看作一个指针,看下例:例八:int array[10]={0,1,2,3,4,5,6,7,8,9},value;...value...
int a=5, *p, *q=&a;这个语句定义了 a 为整型变量,p 和 q 是整型指针,a 存储了5,q存储了a的地址;p=q*这个有错,首先p没有初始化就开始用了,我们不清楚p指向了内存中哪个位置,这是非常危险的,其次,q...
因为指针p指向的是数组a的第1个元素,指针q指向的是数组a的第6个元素,注意数组下标是从0开始的,所以q-p=5,希望能帮到你。
C语言规定:二维数组元素在内存中顺序排放,排列顺序是按行存放。即先顺序存放第一行的数组元素,然后存放第二行的数组元素,依此类推。int a[3][4]第一行:a[0][0],a[0,1],a[0,2]此时a[0,2]的地址==p+=...
这与int a[5]={1,2,3,4,5} ; 是一样的,[]中不写数字,表示数组空间大小由实际数组元素数据个数来决定。这样定义的数组,一般表示一个常量数组。当然,因为没有加const,也可以修改数组元素内容,如:a[0]=6 ;...
我看了其它回答后为你做的补充。&a为取数组名的地址,即为整个数组的地址,它的类型为数组类型,(int*)(&a+1)将其强制转换成整型指针赋值给*ptr,并指向了数组界外,最后用*(ptr-1)又指向了界内的最后一个元素5。