偶然機會從圖書館得到這本書 看到標題“c指針”這不是c語言的精髓麼、“編程之道”。再看封面頗有黑客帝國的感覺,看起來很牛逼的樣子。作爲一個自學菜鳥初學者我試着閱讀它,並將其中自己覺得重要的一些知識點。
1—4章 主要講指針與數組、函數。之間的關係 與譚浩強那本經典頗相似。
1 >數組的下標與指針
#include <stdio.h>
#define SIZE 22
int main (void)
{
char arry[SIZE] = "Gate Ver1.00 20100427";
char i,*p;
for(i=0; i<SIZE;i++ )
{
printf("%c",arry[i]); //下標法;
}
putchar('\n');
p=arry;
for(;*p!='\0'; p++) //指針法;
{
printf("%c",*p);
}
putchar('\n');
return 0;
}
比較兩種方式:編譯器在編譯數組時,是按數組收元素加上個元素地址偏移地址的方式找到相應元素,再進行編譯的,即指針方式,所以,指針法的高效性就體現在這,而且數組越大,這種優勢就越明顯。
2>普通參數與指針參數
參數類型 | 普通變量 | 指針變量 |
---|---|---|
傳遞內容 | 普通變量的值 | 指針變量的值。即:指針變量指向的變量的地址 |
傳遞方向 | 單向 | 單向 |
能否改變實參的事 | 不能 | 能 |
形參類型 | 與實參類型相同,也是普通變量 | 與實參類型相同,也是指針變量 |
作爲函數參數時,普通變量與指針變量有很多相似之處,也有一些不同的地方:普通變量傳遞的是普通變量本身的值,即變量中存放的數據。指針變量也是指針變量本身的值。但普通變量的值是其內存空間中存儲的數值,而指針變量本身的值則是一個地址,是指針變量指向的變量的地址。
由於傳遞內容不同,進而引出了能否改變實參的值。
普通變量是把實參的值傳遞給形參,也就是說形參是實參的拷貝體,形參實參雖然有相同的值,但是存儲在不同的內存空間。在被調函數中是對形參的操作,而對實參沒有進行任何操作。所以,普通變量作爲函數參數時,是實參值不會變化。
指針變量作爲函數參數時,通過指針變量的值傳遞,是讓形參指向實參變量指向的變量,通過指針變量的值傳遞後,形參變量和實參變量同時指向同一變量。所以,再被調函數中,對形參的操作,就是對其指針變量的慚怍。
3>