int main()
{//二维数组实际上是一维数组的扩展int array[4][5]事实上定义四个元素的一维数组,每个元素包含五个整型变量的一维数组,array可理解为指向包含五个元素的数组指针。
int array[4][5] = { 0 };
printf("sizeof int %d\n", sizeof(int));
printf("array:%p\n", array);
printf("array+1:%p\n", array+1);//俩个指针的跨度,结果是14(16进制)10进制20,即跨越5个元素,(array指向四行五列数组的第一行)
system("pause");
return 0;
int main()
{
int array[4][5] = { 0 };
int i, j, k = 0;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
{
array[i][j] = k++;
}
}//利用循环赋初值,使元素值为0,1,2,3,4;5,6,7,8;9,
printf("*(array+1):%p\n", *(array+1));
printf("array[1]:%p\n", array[1]);
printf("&array[1][0]:%p\n", &array[1][0]);
printf("**(array+1):%d\n", **(array + 1));//对地址进行解引用(取值运算符对一个地址取值,把值取出来),就是取出里面的值,*(array+1)==array[1]==就是地址==第二行第一个元素的地址,**(array+1)就是取出地址的值。
printf("*(*(array+1)+3):%d\n", *(*(array + 1) + 3));
printf("array[1][3]:%d\n", array[1][3]);
system("pause");
return 0;
}
*(array+1):0093FDBC
array[1]:0093FDBC
&array[1][0]:0093FDBC
**(array+1):5//因为4行5列,第二行第一个元素是5,地址的值。
*(*(array+1)+3):8
array[1][3]:8
请按任意键继续. . .
*(array+i)==array[i]
*(*array+i)+j)==array[i][j];
数组指针和二维数组
定义一个数组指针int (*p)[3];
Int(*p)[3]=array;array是指向三个元素的数组的指针
int main()
{
int array[2][3] = { { 0, 1, 2 }, { 3, 4, 5 } };
int(*p)[3] = array;
printf("**(p+1):%d\n", **(p + 1));*取值,*(p+1)指针
printf("**(array+1):%d\n", **(array + 1));
printf("array[1][0]:%d\n", array[1][0]);
system("pause");
return 0;
}
**(p+1):3
**(array+1):3
array[1][0]:3
请按任意键继续. . .
day22 二维数组和指针
最新推荐文章于 2024-09-07 11:53:47 发布