首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言指針:為什麼 p 和 *p 值相同?

     編輯:程式設計疑難解答

代碼

int a[4][4] = {2,1,7,88,99};
int (*p)[4];
p = a;
printf("%d\n", p);   // 輸出地址
printf("%d", *p);    // 輸出地址,值相同

原因

二維數組名 a 代表首行地址(類型 int(*)[4]),也是首個元素(即第一行數組)的地址。

  • p 指向整個二維數組(首行地址)。
  • *p 解引用得到第一行數組,數組名在表達式中退化為指向首元素的指針,即 &a[0][0]。
  • 二維數組在內存中連續存儲,首行地址 == 第一行首元素地址 == 整個數組首地址,數值相等但類型不同(int(*)[4] vs int*)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved