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 有幾個。其次有...
他到底是怎麼回事?他到底怎麼回事嗎?
可能他是一個自尊心很強的人,又有點愛面子。不願意在朋友面前跟你秀恩愛,但是,他的內心應該是愛你的,你應該多主動接近他的朋友。這算不上問題。你可以和你男朋友多聊聊天。多瞭解一下他的生活和過去。這樣你和他的朋友也能多聊幾句了。漸漸的你們就能正常的聊天了。儘量不要談過去。談談現在和將來就好多了。感覺他並不...
鼻炎是怎麼回事,鼻炎到底是怎麼回事?
過敏性鼻炎很煩人,如何避免反 作,日常養成戴口罩的好習慣,經常按揉迎香穴有好處。鼻炎的症狀主要有鼻塞 流鼻涕 打噴嚏等表現,但要治好鼻炎,還需要到正規醫院診治。鼻炎在早期比較好 如果延期不治可能會引發其他疾病的同時,還加大了 難度。你好!鼻炎指的是鼻腔粘膜和粘膜下組織的炎症。患有鼻炎的患者常常會有鼻...