#include<stdio.h> 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++; } } printf("array:%p\n",array); printf("*(array):%p\n",*(array)); printf("array[0]:%p\n",array[0]); printf("&array[0][0]:%p\n",&array[0][0]); printf("**(array):%d\n",**(array)); return 0; }为什么printf("*(array):%p\n",*(array));不是取值而是取地址
时间: 2024-04-17 09:22:57 浏览: 29
printf("*(array):%p\n",*(array)); 是取地址的操作而不是取值的操作。这是因为在这里,array 是一个二维数组名,它指向数组的第一行。而 *(array) 表达式将会取得第一行的地址,即指向 array[0] 的指针。%p 格式说明符用于打印指针的地址。如果要打印第一行的内容,可以使用 *(*(array)) 或者 array[0][0]。
阅读全文