C指針編程之道 -1

      偶然機會從圖書館得到這本書 看到標題“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>


發佈了4 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章