請問指標賦值到底是怎麼回事?

時間 2023-07-22 14:55:01

1樓:網友

一個指標變數的值就是某個變數的地址或稱為某變數的指標。

指標變數同普通變數一樣,使用之前不僅要定義說明,而且必須賦予具體的值。未經賦。

值的指標變數不能使用,否則將造成系統混亂,甚至宕機。指標變數的賦值只能賦予地址,決不能賦予任何其它資料,否則將引起錯誤。在c語言中,變數的地址是由編譯系統分配的,對使用者完全透明,使用者不知道變數的具體地址。

int i ,*pi;

i =1;pi =&i;

pi是一個指標變數,它指向i這個變數的記憶體地址。當要顯示pi時,它就顯示i變數的值。

同樣道理,pi是一個指標變數,變數與變數之間賦值就是指標賦值。

例:int j , x , pj , px;

j =1;x =2;

pj =&j;

px =&x;

pj是指向j變數記憶體地址的一個變數;px是指向x變數記憶體地址的一個變數。

當 pj =px時,就是指標賦值。得到的結果是:pj已經指向x了。

c語言 指標如何賦值

2樓:惠企百科

1、變數的指標就是變數的地址。存放變數地址的變數是指標變數。即在c語言中,允許用一個變數來存放指標,這種變數稱為指標變數。

因此,一個指標變數的值就是某個變數的地址或稱為某變數的指標。

2、為了表示指標變數和它所指向的變數之間的關係,在程式中用「*」符號表示「指向」。

3、定義指標變數。對指標變數的定義包括三個內容:指標型別說明,即定義變數為一個指標變數和指標變數名的基本形式型別說明符*變數名。

4、int i,j;表示i,j是一個指標變數,它的值是某個整型變數的地址。或者說i,j指向一個整型變數。至於i、j究竟指向哪一個整型變數,應由向i,j賦予的地址來決定。

5、int *s是指向整型變數的指標變數,float *d是指向浮點變數的指標變數,char *g;是指向字元變數的指標變數。應該注意的是,一個指標變數只能指向同型別的變數,如s只能指向浮點變數,不能時而指向一個浮點變數,時而又指向一個字元變數。

6、指標變數的引用,指標變數同普通變數一樣,使用之前不僅要定義說明,而且必須賦予具體的值。未經賦值的指標變數不能使用,否則將造成系統混亂,甚至宕機。

怎麼給一個指標賦值

3樓:一棵無所不知的小白菜

1、開啟visual studio,建立一個控制檯應用程式,用於演示指標的使用、賦值和取值。

2、在main方法中,新增一個unsafe**段,c#語法中的指標都需要放在這個**段中。

int* p;

4、如果像普通變數一樣直接賦值10,從**效果可以看出,這樣是不被允許的,編譯器直接報錯。

5、那麼,另外定義一個普通變數,例如:int x = 100。

p = x。

7、在指標變數前面加一個星號,表示獲取這個指標指向的地址中的值。例如想要輸出指標p的值,就使用 *p 即可。

4樓:風若遠去何人留

要改p–>a的值,和在這個函式里面是一樣的直接p–>a=要賦值的值。

這樣就可以了。

唯一需要注意的就是要賦值的是結構體指標還是結構體變數,如果不是指標那就要改成點了這樣。

5樓:匿名使用者

不建議從鍵盤輸入一個值直接複製給指標變數。因為如果讓使用者自己從鍵盤輸入一個值給指標,就形成了野指標,野指標的不當使用會帶來嚴重的後果。

6樓:不成材的樹

上面 有人說了野指標的問題,的確是這樣的!

可以使用強制轉換的吧:

int num;

int *p=(int *)num;

7樓:上_善_下_流

指標其實就是記憶體地址。

使用指標可以深入硬體底層。

可以用&運算子將變數的地址取出。賦予指標。int a=5,int* p=&a;

陣列中,陣列名錶示陣列的起始地址。因此可以將陣列名賦予指標。int arry[50];int* p=array;

還有動態分配記憶體時。int* p=new int[50],classa *p=new classa();也是在執行時堆中分配指定大小的記憶體塊。並把記憶體塊起始地址賦予指標變數p.

簡單的應用就是這樣。

複雜的指標應用比如函式指標等。說白了還是地址。用來實現類似於c#委託功能。用久了自然會清晰了。

在指標的運算中。編譯器會自動計算地址增加量。

比如針對 p++後;

對其解引用後*p指向的就是下一個元素的值。比如對於陣列指標。*array=array[0]

array+1)=array[1];

8樓:飄風弓手

c語言……

定義指標……

int *p,a;

p=a;第一:scanf("%d",*p);

第二:scanf("%d",&a);

第三:scanf("%d",p);

9樓:匿名使用者

int *p;

scanf("%d",p);

定義指標p,在賦值就ok了。

指標的定義與賦值形式?

10樓:拒絕游泳德漁

int *p 一般帶有 * 表示指標的定義。

賦值: int a = 3; int *p = a; (相當於 int *p; p = a) 故 *p = 3 (可理解為 *p = a) =3);

int *a = 3; int *p = a ; 相當於int *p ; p = a) 則 *p = 3

11樓:匿名使用者

首先樓主要知道什麼叫定義,什麼叫賦值;

說到定義,就一定要說到宣告;

這兩者看起來差不多,其實差別很大;

定義是要分配記憶體的,而宣告不需要,如樓上所說的帶* 表示定義的話,呵呵,樓主自己想;

而賦值應該是和初始化聯絡在一起的,它和定義沒什麼關係;

初始化是指在定義變數的時候就給該變數賦初值;例:int a = 0;

賦值則不需要是在定義時,如:int a;

a = 5;

c語言指標的賦值問題

12樓:惠企百科

指標在用要注意初始化,例如:

int*p;

p為指標,地址是未知的,如果直接賦值。

p=a;這樣編譯可以通過,但是會產生警告,p的地址是隨機分配的,這樣對未知的地址賦值很危險,可能會覆蓋掉某些重要資料,所以避免這種危險,在定義指標時注意初始化,也就是賦值。

可以int*p=&a;

或者int*p;

p=&a;然後再對p進行操作。

有錯。注意大小寫,還有。

inta=9;

int*p;

p=&a;//這個是指標指向a

p=8;這樣就對了。

指標的賦值。

int*p;

inta;intb[1];

p=&a;p=b; 指標的賦值,「=的左運算元能夠是*p,也能夠是p。

當「=」的左運算元是*p時,改變的是p所指向的地址存放的資料;

當「=」的左運算元是p時,改變的是p所指向的地址。

陣列的變數名b表示該陣列的首地址,因此p=b;也是正確的。

同型別的指標賦值:

intval1=18,val2=19;

int*p1,*p2;

p1=&val1;

p2=&val2;

p1=p2; /注意啦,p1指向了val2,而沒有指向val1備註:字串與指標的初始化和賦值。

初始化:char*cp="abcdefg";/這個初始化過程,是將指標cp指向字串的首地址,而並非傳遞字串的值。由於,在c語言裡面,沒有總體處理一個字串的機制。

賦值:cp="abcdefg";

cp=」abcdefg」;/錯誤!字串常量傳遞的是它的首地址,不能夠通過*cp改動該字串的值,由於該字串為常量,而它僅僅是簡單的將指標指向該字串常量。

這到底是怎麼回事啊,這到底是怎麼回事啊?!

挑戰繞口令 可能是系統出問題了,如果這個朋友因為這個事情就跟你翻臉,他也太過分了啊!大家都在氣頭上,你們都冷靜冷靜,過幾天就好了。他過幾天想明白了,就會來跟你道歉的。誤會都會隨著時間慢慢消解的。另外,不要在盛怒之下做出不明智的決定。 首先你要確定你微博賬號有可能登陸的裝置 手機,pc 有幾個。其次有...

他到底是怎麼回事?他到底怎麼回事嗎?

可能他是一個自尊心很強的人,又有點愛面子。不願意在朋友面前跟你秀恩愛,但是,他的內心應該是愛你的,你應該多主動接近他的朋友。這算不上問題。你可以和你男朋友多聊聊天。多瞭解一下他的生活和過去。這樣你和他的朋友也能多聊幾句了。漸漸的你們就能正常的聊天了。儘量不要談過去。談談現在和將來就好多了。感覺他並不...

鼻炎是怎麼回事,鼻炎到底是怎麼回事?

過敏性鼻炎很煩人,如何避免反 作,日常養成戴口罩的好習慣,經常按揉迎香穴有好處。鼻炎的症狀主要有鼻塞 流鼻涕 打噴嚏等表現,但要治好鼻炎,還需要到正規醫院診治。鼻炎在早期比較好 如果延期不治可能會引發其他疾病的同時,還加大了 難度。你好!鼻炎指的是鼻腔粘膜和粘膜下組織的炎症。患有鼻炎的患者常常會有鼻...