#include<stdio.h>
int main() {
int a[3][3] = { {2,3,4},{5,6,8},{1,5,2} };
int b[3] = { 1,2,3 };
int* p = a; //这里的强转可有可无
int s = 0;
int* k = (int* )a + 9;
while (p < k) s += *p++;// p和k的地址相同时,循环停止,k指的是二维数组所有元素后面的一个位置
//所以一次遍历这个数组了
//printf("%d\n", s);
printf("%d\n", *a);//第一行一位数组的地址
printf("%d\n", a[0]); //第一行一维数组的地址
printf("%d\n", *a+1); // 第一行一维数组的的第二个元素的地址
printf("%d\n", (*a+1)[0]); //数组a[0][1]
putchar(10);
printf("%d\n", (*a+1)+0); //a[0][1]元素的地址
printf("%d\n", &a[0][1]); //a[0][1]元素的地址
printf("%d\n", *(a+1)+0); //第二行一位数组的a[1][0]的地址
printf("%d\n", &a[1][0]); //第二行一位数组的a[1][0]的地址
printf("%d\n", a[1]+1); //第二行一维度数组的a[1][0]的地址
putchar(10);
printf("%d\n", &a[0][0]);//a[0][0]元素的地址
printf("%d\n", &a);
printf("%d\n", &a+1);//这两个相差36个字节
printf("%d\n", *b);
printf("%d",*b+1);
return 0;
}c
看不懂(*a+i)[j]为什么是数组而不是地址来这里
最新推荐文章于 2024-09-16 13:17:08 发布