當前位置:首頁 » 編程語言 » c語言中的指針

c語言中的指針

發布時間: 2022-01-12 03:38:12

『壹』 c語言中指針怎麼使用

1、使用場景

使用指針時,必須將它指向一個變數的地址或者為它分配空間方能使用,如下所示:

#include<stdio.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 ", *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 ",*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 ",*a,*(a+1),a);

(1)c語言中的指針擴展閱讀:

指針的運算

指針指向變數地址,若原變數的內容發生了變化,它本身也會發生變化,指針之間的運算一般為值運算和地址運算

(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 ",*a);

結果輸出2。

參考資料來源 :指針-網路

『貳』 C語言中的指針是什麼意思

指針是一個用來指示一個內存地址的計算機語言的變數或中央處理器(CPU)中寄存(Register)。指針一般出現在比較近機器語言的語言,如匯編語言或C語言。面向對象的語言如Java一般避免用指針。指針一般指向一個函數或一個變數。在使用一個指針時,一個程序既可以直接使用這個指針所儲存的內存地址,又可以使用這個地址里儲存的變數或函數的值。
大家都認為,c語言之所以強大,以及其自由性,很大部分體現在其靈活的指針運用上。因此,說指針是c語言的靈魂,一點都不為過。

簡單比方……比如你是一個變數,那麼你家的地址就相當於是你的指針, 我可以通過找到你家地址而找到你。

『叄』 C語言中指針是什麼

指針是c語言的難點,很難被學生接受。本部分主要演示:指針的定義,普通變數的定義,建立關聯,直接賦值,間接賦值。為了簡便,暫時只討論整形。

設計:

在組合框中選擇操作的類型,在彈出的對話框中做進一步的處理。二十個編輯模擬內存,十個為整形,十個為指針區.由於「內存」的限制,很容易「內存不足」。二十個靜態控制項顯示變數名及模擬內存地址。

整形數組記錄數值,字元串數組記錄變數名,注意對應。

定義:加上變數名,並隨機賦初值。

關聯:在對話框的組合框中選擇變數,前有提示信息"=&",改變指針的值,並將相應的編輯框連線。

賦值:在個對話框中選擇整形變數或指針變數,並輸入值。

有必要的話,將CEdit改成CRichEdit,用SetSel反向顯示正在處理的模擬空間。

測試:

1, 注意空懣狀態。

2,多次重復同一操作。

『肆』 c語言中的指針是什麼

1.指針就是1個變數,他也是一個存放內容的內存空間。
2.指針存放的內容是另一個內存空間的起始地址。不同於一般變數存放的就是變數值。
3.取值操作符*對於指針的作用是取得指針變數存放的內存地址裡面的值,不加*取出的是指針變數存放的值(就是一個內存地址)

上面3步,step by step 你就理解了.

『伍』 在C語言中什麼是指針

指針是C語言裡面的一個重要概念,也是C語言的難點之一.指針可以表示許多復雜的數據結構,如隊列,棧,鏈表,樹,圖等.
要學習指針,應該先了解以下幾個概念:變數的地址,變數的內容,直接定址,間接定址.
變數的地址:變數在內存中所佔存儲空間的首地址.
變數的內容:變數在內存的存儲單元中存放的數據.
如:
int a=10;//兩個位元組
假設a占的內存單元的地址為:2020和2021
則內存單元的地址為2020的是存放數據a(即10)的低位元組,內存單元的地址為2021的是存放數據a即10)的高位元組.
如果將變數a的首地址2020保存到另一個變數p中,那麼為了訪問變數a,我們可以通過變數p得到a的的地址2020,再到該地址中訪問變數a.

直接定址:直接按變數名來存取變數的內容的訪問方式.
專門用於存放地址型數據的變數是指針變數,如上面所說的p.
間接定址:通過指針變數(如P)間接存取它所指向的變數(如a)的訪問方式稱為間接定址.
在上例中,a的地址用&a表示.由於p是保存地址型數據的,所以p=a的地址=&a
在此p就叫做指針(或指針變數)
其定義如下:
int *p;
指針有好多好處:
1.為函數提供修改變數值的手段.
2.為C的動態內存分配提供支持.
3.為動態數據結構提供支持.
4.可以改善程序的效率.

『陸』 c語言中的指針!!

哇,非常牛B的東西,被你說的沒用了 哈哈
比如數組名作函數參數,數組名本身就是一個指針
調用函數是不能改變實參,因此調用指針,就可以改變主函數中的變數
再比如數據結構中的各種結構,都是通過對指針的操作
最常見的單鏈表,他結構相當於數組,數組元素間的物理位置相鄰,但是鏈表物理位置可以不相鄰,通過指針首尾鏈接在一起
等等,說不完哈

『柒』 C語言中指向指針的指針是什麼意思

指針其實也是個變數(只要是變數就一定有相應的內存空間) 只是這個變數比較的特殊

它只能存放別的變數的地址 變數時在內存中是有地址的

你要明確兩概念:變數值和變數地址

變數值:是變數本身的內容

變數地址:是該變數在內存中的位置編號

『捌』 C語言中的指針到底有什麼用

所有變數值保存在內存中,而每個內存都有一個地址,所謂地址就是一個整數編號,如同門牌號碼用於定位(專業術語叫定址),一個地址對應一個位元組(8bit)的內存單元。

如今的編譯器,一個整數int類型的值佔用32位bit,也就是4位元組,編譯器將第一個位元組的編號定義為該整數的地址,由於保存地址的變數就像一個箭頭指向某地址,而稱為指針變數。

int a =10; //定義一個整數變數a,對其賦值10
int *p =&a;//定義一個指針變數p,對其賦值a的內存地址,&符號意思為引用跟隨其後的變數地址。

cont <<a<<end; //輸出 a的值:10
cont << p << end ;// 輸出p的值:XXXXX 其實為a的地址,該地址由編譯器和運行時確定。
cont << *p <<end; //輸出p指向的地址中的值:10,也就是a的值,*星號放在變數前面意思就是取該變數中的地址所指內存中的值。
讀取過程為:p的值(a的地址)->定址->取值

由於指針是一個變數的首個位元組的地址,所以要告訴編譯器被指地址包含連續多少個位元組,因此指針也有類型。比如上面例子中聲明了p指針是個整數指針,這樣編譯器知道p指向一個4位元組的內存塊。

你可以將指針變數看做一般的整數變數來理解,用來保存一個整數(地址是個整數),只是,該整數代表著某地址,在這里是a的地址。

在C/C++中很靈活,但是也很危險,也很難學,如果指針指向錯誤的地址會引起程序崩潰,因此在C#中已經被微軟封裝了,但內部還是有指針的。

如果有必要,C#中也可以使用指針,使用非安全代碼,在項目生成選項卡中勾選「允許非安全代碼」,然後就可以使用指針了,不過不建議這么做。
unsafe
{
int a = 10;
int* p=&a;
}

熱點內容
安卓手機怎麼轉移蘋果系統 發布:2024-09-17 04:19:07 瀏覽:934
sql從表中查詢數據 發布:2024-09-17 04:19:07 瀏覽:972
米粒泥解壓 發布:2024-09-17 04:19:01 瀏覽:729
2010word加密方法 發布:2024-09-17 04:17:36 瀏覽:282
crv哪個配置性價比高2021 發布:2024-09-17 04:07:51 瀏覽:36
wincc圖形編譯在哪裡 發布:2024-09-17 03:58:26 瀏覽:978
androidubuntu 發布:2024-09-17 03:50:27 瀏覽:702
識夢源碼 發布:2024-09-17 03:50:18 瀏覽:27
諾基亞密碼忘了打什麼電話 發布:2024-09-17 03:27:09 瀏覽:556
樹深度優先演算法 發布:2024-09-17 03:26:58 瀏覽:474