本文目錄一覽:
- 1、C語言指針怎麼用?
- 2、C語言中指針是什麼
- 3、c語言指針是什麼意思!
- 4、C語言指針的用法是什麼?
- 5、c語言指針詳解
C語言指針怎麼用?
在c語言中.指針被用來表示內存單元的地址,如果把這個地址用一個變量來保存,則
這種變量就稱為指針變量。指針變量也分別有不同的類型,用來保存不同類型變量的地址。
嚴格地說.指針與指針變量是不同的,為了敘述方便,常常把指針變量就稱為指針。
內存是計算機用於存儲數據的存儲器,以位元組作為存儲單元.為了能正確的訪問內存單
元,必須為每一個內存單元編號,這個編號就稱為該單元的地址。如果將一個旅店比喻成內
存,則旅店的房間就是內存單元,房間號碼就是該單元的地址。
指針變量定義格式:
[存儲類型]
數據類型
*指針變量名[=初始值]
指針變量一旦定義,必須採用賦值的方式將其與某個變量實體相聯繫,才能使用。指針
變量的賦值方式:
指針變量名;&普通變量名;
C語言中指針是什麼
我們都知道:C語言中的數組是指 一類 類型,數組具體區分為 int 類型數組,double類型數組,char數組 等等。同樣指針 這個概念也泛指 一類
數據類型,int指針類型,double指針類型,char指針類型等等。
通常,我們用int類型保存一些整型的數據,如 int num = 97 , 我們也會用char來存儲字符: char ch = ‘a’。
我們也必須知道:任何程序數據載入內存後,在內存都有他們的地址,這就是指針。而為了保存一個數據在內存中的地址,我們就需要指針變量。
因此:指針是程序數據在內存中的地址,而指針變量是用來保存這些地址的變量。
c語言指針是什麼意思!
指針其實是一個整形變量,與其它數據不同的是,它的作用是用來存儲其它變量的地址。指針(Pointer)是編程語言中的一個對象,利用地址,它的值直接指向(points to)存在電腦存儲器中另一個地方的值。由於通過地址能找到所需的變量單元,可以說,地址指向該變量單元。
因此,將地址形象化的稱為「指針」。意思是通過它能找到以它為地址的內存單元。
再打個比方:有個人讓你去麥當勞幫我買個雪糕,那麼麥當勞是這個變量a,但是那個人現在把麥當勞所在的地址寫在紙上給你,那麼這張紙就可以看做一個指向麥當勞的指針。
擴展資料:
舉例說明:
int p; //這是一個普通的整型變量。
int *p; //首先從P 處開始,先與*結合,所以說明P 是一個指針,然後再與int 結合,說明指針所指向的內容的類型為int 型.所以P是一個返回整型數據的指針。
int p[3]; //首先從P 處開始,先與[]結合,說明P 是一個數組,然後與int 結合,說明數組裡的元素是整型的,所以P 是一個由整型數據組成的數組 。
int *p[3]; //首先從P 處開始,先與[]結合,因為其優先級比*高,所以P 是一個數組,然後再與*結合,說明數組裡的元素是指針類型,然後再與int 結合,說明指針所指向的內容的類型是整型的,所以P 是一個由返回整型數據的指針所組成的數組。
int (*p)[3]; //首先從P 處開始,先與*結合,說明P 是一個指針然後再與[]結合(與”()”這步可以忽略,只是為了改變優先級),說明指針所指向的內容是一個數組,然後再與int 結合,說明數組裡的元素是整型的.所以P 是一個指向由整型數據組成的數組的指針。
int **p; //首先從P 開始,先與*結合,說是P 是一個指針,然後再與*結合,說明指針所指向的元素是指針,然後再與int 結合,說明該指針所指向的元素是整型數據。由於二級指針以及更高級的指針極少用在複雜的類型中,所以後面更複雜的類型就不考慮多級指針了,最多只考慮一級指針。
int p(int); //從P 處起,先與()結合,說明P 是一個函數,然後進入()里分析,說明該函數有一個整型變量的參數,然後再與外面的int 結合,說明函數的返回值是一個整型數據。
Int (*p)(int); //從P 處開始,先與指針結合,說明P 是一個指針,然後與()結合,說明指針指向的是一個函數,然後再與()里的int 結合,說明函數有一個int 型的參數,再與最外層的int 結合,說明函數的返回類型是整型。
所以P 是一個指向有一個整型參數且返回類型為整型的函數的指針。
int *(*p(int))[3]; //可以先跳過,不看這個類型,過於複雜從P 開始,先與()結合,說明P 是一個函數,然後進入()裏面,與int 結合,說明函數有一個整型變量參數,然後再與外面的*結合,說明函數返回的是一個指針。
然後到最外面一層,先與[]結合,說明返回的指針指向的是一個數組。然後再與*結合,說明數組裡的元素是指針,然後再與int 結合,說明指針指向的內容是整型數據.所以P 是一個參數為一個整數據且返回一個指向由整型指針變量組成的數組的指針變量的函數.
參考資料:百度百科-指針
C語言指針的用法是什麼?
指針是C語言中廣泛使用的一種數據類型。運用指針編程是C語言最主要的風格之一。
利用指針變量可以表示各種數據結構;能很方便地使用數組和字符串;並能象彙編語言一樣處理內存地址,從而編出精練而高效的程序。指針極大地豐富了C語言的功能。
學習指針是學習C語言中最重要的一環,能否正確理解和使用指針是我們是否掌握C語言的一個標誌。
同時,指針也是C語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多編程,上機調試。只要作到這些,指針也是不難掌握的。
c語言指針詳解
指針是一個特殊的變量,它裏面存儲的數值被解釋成為內存里的一個地址。數據在內存中的地址也稱為指針,如果一個變量存儲了一份數據的指針,我們就稱它為指針變量。
計算機中所有的數據都必須放在內存中,不同類型的數據佔用的位元組數不一樣,例如 int 佔用 4 個位元組,char 佔用 1 個位元組。
為了正確地訪問這些數據,必須為每個位元組都編上號碼,就像門牌號、身份證號一樣,每個位元組的編號是唯一的,根據編號可以準確地找到某個位元組。
C語言用變量來存儲數據,用函數來定義一段可以重複使用的代碼,它們最終都要放到內存中才能供 CPU 使用。數據和代碼都以二進制的形式存儲在內存中,計算機無法從格式上區分某塊內存到底存儲的是數據還是代碼。
當程序被加載到內存後,操作系統會給不同的內存塊指定不同的權限,擁有讀取和執行權限的內存塊就是代碼,而擁有讀取和寫入權限(也可能只有讀取權限)的內存塊就是數據。
CPU 只能通過地址來取得內存中的代碼和數據,程序在執行過程中會告知 CPU 要執行的代碼以及要讀寫的數據的地址。
如果程序不小心出錯,或者開發者有意為之,在 CPU 要寫入數據時給它一個代碼區域的地址,就會發生內存訪問錯誤。這種內存訪問錯誤會被硬件和操作系統攔截,強製程序崩潰,程序員沒有挽救的機會。
變量名和函數名為我們提供了方便,讓我們在編寫代碼的過程中可以使用易於閱讀和理解的英文字符串,不用直接面對二進制地址,那場景簡直讓人崩潰。
需要注意的是,雖然變量名、函數名、字符串名和數組名在本質上是一樣的,它們都是地址的助記符,但在編寫代碼的過程中,我們認為變量名表示的是數據本身,而函數名、字符串名和數組名表示的是代碼塊或數據塊的首地址。
擴展資料
指針使用(* 和 )
*a可以理解為*(a),a表示取變量 a 的地址(等價於 pa),*(a)表示取這個地址上的數據(等價於 *pa),繞來繞去,又回到了原點,*a仍然等價於 a。
*pa可以理解為(*pa),*pa表示取得 pa 指向的數據(等價於 a),(*pa)表示數據的地址(等價於 a),所以*pa等價於 pa。
對星號*的總結
在我們目前所學到的語法中,星號*主要有三種用途:
1、表示乘法,例如int a = 3, b = 5, c; c = a * b;,這是最容易理解的。
2、表示定義一個指針變量,以和普通變量區分開,例如int a = 100; int *p = a;。
3、表示獲取指針指向的數據,是一種間接操作,例如int a, b, *p = a; *p = 100; b = *p;。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/293243.html