3、把a[0][0]的地址给了p 好好琢磨下。是不是这个道理。3维数组在内存里面还是线性存储的 a[0][0]a[0][1]a[0][2]……所以 a,a[0],a[0][0]都是相等的!给个程序你看看 include "stdio.h"include "conio.h"main(){ int a[2][2]={1,2,3,4};printf("%d\n",a);print...
int a[]={1,2,3,4},y //定义数组a和变量y p=&a[3]; //*p指向a[3]的地址 --p; //*p指向a[2]的地址 y=*p; //将a[2]赋值给y printf()"y=%d\n",y);//这里应该是printf("y=%d\n",y)吧,输出y=3.希望可以帮到你 ...
include <stdio.h> void main(){ int a[]={8,2,9,4,1},*p;p=a;(p+2)+=2;printf("%d %d",*p,*(p+2));} 输出的结果是8 11这两个数。首先你要知道指针的含义,和数组中数组名的作用。第一:你定义了一个指针p,并且把a的值赋予给p,这就相当于把一维数组a[5]的首地址赋予...
for (int i = 0; i < 5; i++){ for (int j = 0; j < 5; j++){ int nPos = (i * 4 + j) % 5;printf("%d", a[nPos]);} printf("\n");}
void main() //这个是主函数 { int i, a[5]; //定义一个变量,一个数组;int *p=a; //这句话的意思就是取数组的首地址类似于 p=&a[0];for (i=0; i<5; i++,p++ ) //对i变量的控制使他的值小于数组的长度5。p++;就是地址+1;{ *p=i; //对数组的...
while前的括号打反了?程序并不会出问题, 因为第一次循环a[i++];执行后, i = 1; while条件中先++i, 导致i = 2, 而a[2] < 5 条件是不成立的, 直接跳出了do {} while循环. 执行for循环遍历打印a数组.这里如果a[] = {2,3,4,5,4,3}就出问题了, 正好把a[3]=5跳过去了, 会...
①*p=&a[3],所以*p=4(这个不解释了)②A我们明确一个概念,就是a[10]这串位置是连续的。B假设i=*p(i为p所指的单元格的值)。*p=4,即i=&a[3]=4 Cp-2即p所在的地址往前推2单元格;即i所指的值往前推2单元格,即i=&a[3]往前推2单元格,即&a[1]=2 综上所述4+2=6 ...
int a[5]={0,1,2,3,4},*p1=&a[1],*p2=&a[4];p1 指向 数组元素 a[1]的地址,p1 指向 数组元素 a[4]的地址。p2-p1 等于 (4-1)= 3. [计量单位是 sizeof(int) 。]。
include <stdio.h> int main() { printf("Hello Fenby!");int a[ ]={5,6,7,8,9},*p;p=a;a[2]=*(p+3)+11;printf("%d,%d,%d,%d\n",*p,a[2],*(p+1),*(p+3));//输出结果是5,19,6,8 / 首先a的地址赋值为指针p 5 表示*p 第一个值 19 是数组里面的值,因为数组...