1樓:採春
先定義乙個結構體,在用結構體定義乙個指標變數。
c++指標的應用。
2樓:網友
簡單的跟你說說吧。
如果你理解了,希望你多加點分,呵呵。
如果你要申請乙個整形變數 int a = 5;
那麼a 的值就是5對吧?這個容易理解,那麼如果你想知道a所指向的這個5在記憶體的什麼位址。
那麼你就需要取a的位址,進行 &a 操作。沒錯 &a 的返回值就是a所在的位址,如果我們想吧這個位址存下來 ,就需要乙個指標就儲存,即 int* b = &a;
b就是乙個指標。
其實你發現沒?
int a = 5
int* b = &a
其實 指標也是乙個變數,只是我們普通的變數儲存的是指,二指標這個特殊的變數儲存的記憶體位址。為了吧這個特殊的變數和普通的變數區別開,我們給取乙個新名字:指標。
理解了指標的實際意義之後,也就不存在用好不用好的問題了。其實用指標和直接用變數在功能上完全沒區別。那為什麼要用指標呢?最主要的市效率上的問題。
如不你設計乙個函式。
struct get()
返回乙個結構體物件的函式,你要知道,c++中,這樣的返回值都是複製傳遞的過程,也就是說,你返回這個結構體的時候,程式會複製乙個一樣的結構體物件在棧裡面,然後接受的變數在通過拷貝建構函式,複製乙個新的變數。最後程式在析構掉這個臨時的。如果結構體很小,沒什麼問題,如果很大呢?
這樣一構造,一析構,會非常浪費時間。但是指標就不一樣了,管你怎麼弄,反正就是4位元組,和乙個int一樣,完全沒區別。
希望你能理解我說的這些。
3樓:網友
理解指標,關鍵在於對記憶體分配的理解。
c語言中指標有哪些用處。或者可以用來做什麼,請簡單舉例說明
4樓:網友
指標可以快速訪問陣列中的元素,想訪問下乙個,就自加1,上乙個就自減1,下一行就自加一行,上一行就自減一行,特別適用快速逐點處理影象,如:unsigned char img[1024][768],*p; int i,j; p=(unsigned char *)img; for ( i=0;i<1024;i++)for ( j=0;j<768;j++,p++ p+=16;
指標還可以用不同型別來訪問同一組資料:
unsigned char a[4],*p; unsigned int *q; p=a; *p=0x12; p++;p=0x34; p++;p=0x56; p++;p=0x78; q=(unsigned int *)a; printf("%xh",*q);會輸出十六進位數78563412h
另外指標可以用於給函式傳遞陣列起始位址、結構位址、類位址、結構陣列位址,這些複雜資料組合,函式返回值也是這樣,另外利用指標還能不從陣列起始位址開始傳入陣列。比如:char str; scanf("%s",str); printf("%s",str+1);
C語言密碼驗證問題(程式設計求改)
b 定義乙個陣列變數b,佔用個位元組。你想要從鍵盤輸入個字元,通過gets函式接收資料。但是,gets內部是這麼幹的 不管你輸入幾個字元,都要在末尾補乙個 從鍵盤接收了個字元放入陣列b以後,b就被佔滿了,補的就順序放在了陣列b的外邊。恰好,陣列b的外面就是陣列a,補的擠佔了陣列a的第乙個位元組。然後無論...
用C語言程式設計序 用指標方法處理。寫一函式,將3 3的整型矩陣轉置。必須使用巨集定義defin
比如說3 2 7 4 1 3 5 0 2 轉置後是 3 4 5 2 1 0 7 3 2 這個只需要 交換幾個指標就可以 了現在沒時間 一會兒給你程式關鍵 void change char s1 char s2 change s 1 0 s 0 1 change s 1,2 s 2 1 change ...
用c語言編寫12320?的程式,用C語言編寫1!2!3!20!?的程式
include int fun int int main printf d n sum 輸出算式結果return 0 int fun int i 階乘函式 採用函式遞迴呼叫return 1 include void main printf d n sum include include long l...