-
-
指针
-
发表于: 2021-4-26 00:44 2740
-
指针 跟地址的区别:
指针有解释信息,描述类型。
地址没有解释信息。
数组名是数组第0个元素类型的指针常量
ary是ary[0]类型的指针常量
二维数组的元素是一维数组
二维数组是一维数组类型的指针常量
ary是int[3]类型的指针常量
int ary[2][3] = { //&ary == 0x19ff18
{10, 20, 30}, // ary[0]
{40, 50, 60} // ary[1]
};
int (*p)[3] = ary;
printf("%p\r\n", ary); //19ff18
printf("%p\r\n", p); //19ff18
printf("%p\r\n", ary); //19ff18
printf("%p\r\n", ary+1); //19ff24
printf("%p\r\n", ary+1); //19ff1c
printf("%p\r\n", *(ary+1)); //19ff24
/
ary[1]得到数组的第1个元素
二维数组的元素是一维数组
ary[1]得到了int[3]这样的一维数组名
数组名是数组第0个元素类型的指针常量
int[3]这样数组名是int类型的指针常量
ary[1]这样数组名是int类型的指针常量
对某类型指针加整型得到同类型指针常量
ary[1] + 1得到int类型的指针常量
/
printf("%p\r\n", ary[1] + 1); //19ff28
printf("%p\r\n", ary[1] + 1); //41
printf("%p\r\n", (ary[1] + 1)); //50
printf("%p\r\n", (*(ary+1) + 1)[1]); //60
return 0;