本文目錄一覽:
- 1、c語言中指針怎麼使用?
- 2、c語言指針詳解
- 3、C語言指針怎麼用?
c語言中指針怎麼使用?
1、使用場景
使用指針時,必須將它指向一個變量的地址或者為它分配空間方能使用,如下所示:
#includestdio.h
#include stdlib.h
int main(int argc, char const *argv[])
{
int a[5]={0,1,2,3,4};
int *b,*d;
int c=2;
int *e=a; //e指向a數組首地址
//*b=2; 無法直接初始化
//printf(“%d\n”, *b);
e=e+2; //移動兩個地址單元
d=c; //d指向c的地址來表示值
c=4; //修改原c變量的值,d指針的值會發生改變
b=(int *)malloc(sizeof(int));//為b分配一個int型空間來直接存儲值
*b=2;//分配空間後可以直接賦值了
printf(“this is e,b,c,d :%d %d %d %d\n”,*e,*b,c,*d);
2、類型說明
(1)int *a :表示一個指向int型變量的指針,指向的是變量的地址單元
(2)char *b:表示一個指向char變量的指針
*a表示的是這個指針指向地址的值,a為此指針本身的地址,這點要明確,一般用*(a+1)、*(a+2)來表示值,如:
int nums[5]={0,1,2,3,4};
int *a=nums;
printf(“%d %d %p\n”,*a,*(a+1),a);
擴展資料:
指針的運算
指針指向變量地址,若原變量的內容發生了變化,它本身也會發生變化,指針之間的運算一般為值運算和地址運算
(1)值運算:直接通過*運算方式,像a+*(a+1),結果為第一個元素與第二個元素相加。
int nums[5]={0,1,2,3,4};
int *a=nums;
(2)地址運算:通過a+i的方式.指針會指向a的下i個地址。
int nums[5]={0,1,2,3,4};
int *a=nums;
a=a+2;
printf(“%d\n”,*a);
結果輸出2。
參考資料來源 :指針-百度百科
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;。
C語言指針怎麼用?
在c語言中.指針被用來表示內存單元的地址,如果把這個地址用一個變量來保存,則
這種變量就稱為指針變量。指針變量也分別有不同的類型,用來保存不同類型變量的地址。
嚴格地說.指針與指針變量是不同的,為了敘述方便,常常把指針變量就稱為指針。
內存是計算機用於存儲數據的存儲器,以字節作為存儲單元.為了能正確的訪問內存單
元,必須為每一個內存單元編號,這個編號就稱為該單元的地址。如果將一個旅店比喻成內
存,則旅店的房間就是內存單元,房間號碼就是該單元的地址。
指針變量定義格式:
[存儲類型]
數據類型
*指針變量名[=初始值]
指針變量一旦定義,必須採用賦值的方式將其與某個變量實體相聯繫,才能使用。指針
變量的賦值方式:
指針變量名;&普通變量名;
原創文章,作者:NIQB,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/148818.html