通過指標引用陣列,通過陣列引用指標,你搞明白了麼?通過下面3種情形來了解一下陣列和指標
case 1.
unsigned char arry[10];unsigned
char *ptr;
unsigned
char a, b, c;
ptr = arry;
a = ptr[0];
b = ptr[1];
c = ptr[2];
case 2.
unsigned char arry[10];unsigned
char *ptr;
unsigned
char
a, b, c;
ptr =arry;
a = *ptr;
b = *(ptr+1
);c = *(ptr+2);
case 3.
unsigned char *ptr = (unsigned char *)0x20000000;unsigned
char
a, b, c;
a = ptr[0
];b = ptr[1
];c = ptr[2];
以上3種情形編譯都能通過,想要表達的是怎樣用陣列的方式(下標)表達乙個指標內容,和怎樣用指標變數的方式表達乙個陣列。
對於case 1,c語言規定,陣列名(不包括形參陣列名,形引數組並不佔據實際的記憶體單元)代表陣列中首元素(即序號為0的元素)的位址,所以ptr指向陣列arry的首位址。那麼帶下標的指標變數是什麼含義呢?其實在程式編譯的時候,對下標的處理方法是轉換為位址的,對ptr[i]處理成*(ptr+i)。
case 2 是指標的常規引用,case 3和case 1類似,都是帶下標的指標變數的應用。
通過以上的簡單分析,可以得出乙個結論,下標法直觀,指標變數法效率高。
[參考]:
[1] 譚浩強著. c程式設計教程. 北京:清華大學出版社,2007
/×××××××××××××××××××××××××××××××××××××××× the end××××××××××××××××××××××××××××××××××××××××××××/
C語言基礎 指標陣列與陣列指標
一 指標陣列 在這一節中我們來學習乙個陣列,這個陣列比較特殊,也比較普通。說它特殊是因為這個陣列是指標的陣列,也就是說我們有乙個陣列,這個陣列裡存放的變數型別是指標型變數 說它普通是因為陣列變數其實與其它普通變數沒有什麼區別,指標變數就是一種可以存放記憶體位址的變數,所以它們也可以被定義成一串連續的...
C語言基礎 指標與陣列
1.陣列指標 概念 指向陣列元素的指標 作用 使用陣列指標間接訪問陣列的元素 定義 int p 初始化 int a 4 int q a 定義了乙個指標變數q,賦值陣列的首位址 第乙個元素的位址 q指向了陣列的第乙個元素 int q a 0 跟上面等價陣列指標如何去訪問陣列元素 p 1 表示指向陣列的...
C語言基礎 指標與陣列
一 資料的位址和通過位址訪問資料 1 基本的資料型別的位址 int a a 變數a的位址 2 陣列的位址 int a 5 a,a,a 0 3 函式的入口位址 函式名 或者 函式名 4 通過位址去訪問記憶體中的資料 通過間接訪問運算子 訪問記憶體中的資料 二 指標的基本概念 1 定義 變數的位址稱為變...