1樓:
是你想多了
指標實際上也是乙個變數, 也佔用記憶體, 你用&取指標變數的位址, 沒問題, 它並不會給 "&指標變數" 這個東西分配記憶體, 只是把指標變數的位址值給你而已.
這樣想吧, 指標實際上也是乙個變數, 只不過它的值是乙個位址, 不是乙個整型, 字元型....
但是,但是,但是(重要的事說三遍) 指標變數指向的位址是有具體型別的, 比如整型, 字元, 字串, 甚至結構體, 類例項, 都可以
所以才有int * ,char * ,cwnd* ,指向指標的指標 等等
喝了點酒, 話太多了, sorry
再補充一下, 指標定義時也可以不具體指向某一種型別: void* p;
2樓:匿名使用者
這不是遞迴,你要清楚乙個指標變數:
指標變數內容:這個記憶體儲存任何型別的指標值,資料型別跟宣告的型別關聯通過*來獲取指標的內容,不會出現無限指下去的情況的比如int a;
int *p1 = &a;
//**p3 == *p1 == a;
c++中關於指標的一些問題
3樓:七寸煙火
你理解的有問題哦親,這輸出的不是位址哦,animal是乙個變數,他擁有乙個基址,用cout << &animal << endl;輸出,你這輸出的是animal[1]之後的內容哦,也就是o之後的,另外樓下的回答輸出的也是animal的位址而已,因為他們屬於乙個變數,另外位址是0x...(零x),二進位制是零x不是ox(歐x)哦
4樓:匿名使用者
因為c++標準庫中i/o類對《操作符過載,在遇到char指標時會將其當作字串來處理,所以會輸出"ox",如果想輸出位址,可以將其轉換成void指標或是使用printf。
cout << (void*)&animal[1] << endl;
printf("%p\n", &animal[1]);
關於c++指標的問題,分別代表什麼?
5樓:
第一第二個一樣,第三個不完整如 int (*p)[3]表示指向3元素的一維陣列
int (*p)()表示指向無參函式指標,最後乙個應該是強制型別轉換轉成int*這種型別希望回答能幫到你,**不清楚再問。
6樓:超級da玩家
int *p;語句、int* p;語句和int (*p);語句含義相同:宣告乙個指標p,該指標指向int型別的變數;(注意:*號,指標宣告符)
在int(*p)作為表示式時(如int m = int (*p);):將指標p指向的變數強制型別轉換為int型別(其中,*p表示:對指標p解引用,也就是取指標p所指向的變數;int()表示:
將括號內的變數強制轉換為int型別);(注意:*號,解引用符)
(int*)str表示式:將變數str強制型別轉換為int*型別的指標型別;(注意:*號,解引用符)
備註:int(*p)表示式是c++的寫法,(int)(*p)表示式是c語言的寫法,這兩種寫法在c++中是等價的。
int main()
7樓:放縱思想
前三種一樣的意思,不一樣的寫法。
#include
void main()
關於c++指標的問題
8樓:匿名使用者
程式的功能
形成乙個十元素陣列,陣列內的元素不能被其它元素整除。(說白了就是求前十個素數)
#define max 10
void main()
while (r&&i if (r) // 條件為0時為假, *pw++=i; //給下乙個元素賦值 n++; //n值變化範圍:2,3,4,5,6,7,8,9,10 }i+=2; // i=7; i=9 i=11 ……………… } while (n j=0; pr=primes;//為什麼再次把陣列的首位址賦給了pr? 見答案c. for (i=0;i 形成乙個十元素陣列,陣列內的元素不能被其它元素整除。(說白了就是求前十個素數) pw的能功是加入乙個新的數到陣列。pr的功能是次訪問陣列內的每乙個數 答案a:為什麼要定義兩個指標. 因為,乙個指標用於修改陣列資料,乙個指標用於遍歷陣列兩指標許可權不一樣.在下面程式中,凡是涉級修改的都是用的pw.檢視的都用的是pr. (這也是程式設計的思想) 還有,不能替換,兩個指標,在同一時刻所用處於的位置是不一樣的。 。如果,替換了會很麻煩。就像你編寫冒泡演算法一樣,兩個資料指標位置是不一樣的。 答案b:答案a提到過。每一次外部迴圈完成,都要對比下乙個即將加入陣列的數,是否能整除陣列裡的數,如果不把指標重置,指標沒有法訪問指標之前的數。 ,則沒有法對比。。,pr指標重置。。,pr指標用於內層迴圈遍歷資料。 它要依次訪問陣列內的每乙個數。 判讀是否加入陣列。 答案c:因為,在接下來的程式還會用到,pr來遍歷陣列。。如果不重置,則指標沒有法訪問指標之前的數。 題外話,5樓的同志,你不要亂教哦。。 primes[max];//正常情況下,此處是:primes= 修改下哈。。 primes=(二進位制) 如果陣列定義了, 未被使用的元素,預設為全1(二進位制) 由於,計算機中,二進位製數第一位為,符號位,所以,示被定義的元素位為,乙個無窮小的數。 有多小,得看你計算機是多少位了。 。 再談談你這個數所導置的後果,0在計算機中,被認為是,假,非0則為真。。 你這樣認為,直接導致了後面的if語句,可能誤判。。。。。後果,。。。 不用謝我哈。 9樓: void main() while (r&&i if (r) i+=2; } while (n j=0; pr=primes;//同上,pr重新指向陣列首位址,這樣才能遍歷輸出啊 for (i=0;i 10樓: //計算並輸出前10個素數 #include #include using namespace std;//使用命名空間std#define max 10//巨集定義,編譯器遇到max替換成10void main() while (r&&i if (r) i+=2;//偶數除了2,不可能是素數,所以i遞增2,判斷i是否為素數 } while (n j=0; pr=primes;//為了輸出所有素數,又重新指向陣列的開頭for (i=0;i 11樓:匿名使用者 #include #include using namespace std; #define max 10 void main() while (r&&i if (r) i+=2; } while (n j=0; pr=primes;//為什麼再次把陣列的首位址賦給了pr? 這個時候的primes中的值是修改後的素數值了。賦值為了顯示出來。 for (i=0;i 12樓: 陣列首位址複製主要是用來儲存 然後位址++就挨邊輸出了! *pw++=2;*pw++=3;這個是把2和3挨邊複製給pw指標指向的位址空間 你要看清是有++的 13樓: void main() int *pw,*pr;//為什麼要定義這兩個指標?這兩個指標在下面程式中都指向了陣列首位址 那麼乾脆就把所有pw,pr都替換成陣列首位址不就行了?可是替換後又不能得出結果。 為什麼?//為了指標的靈活切換,比如第乙個do迴圈裡面多次:pr=primes,實際上,兩個指標都在不停地移動 long q; pw=primes;//為什麼把陣列的首位址賦給了pw? n=2; *pw++=2;*pw++=3;//為什麼pw的值同時賦給了兩個整數? //此後:primes=,pw指向了*0處i=5; do while (r&&i0 並且 i 0i+=2; } while (n pr=primes;//為什麼再次把陣列的首位址賦給了pr?此處是為了從頭遍歷此陣列 for (i=0;i 14樓:匿名使用者 1st預處理中定義了#include #include using namespace std; #define max 10 意思是我會使用cin&&cout 和在後面程式裡吧所有max換成10 2主程式main被定義成了void(無值)3int i,j,n,p,r,primes[max]; 這意思是吧i j n p r定義成整數型 primes是乙個擁有max個元素的陣列,max就是10(好像是字元10) 4樓主注意關鍵的來了:: 為什麼把陣列的首位址賦給了pw? 解:原式=pw是以位址奇偶好像一空屋子,把數柱狀了竟來,一豬衝進豬圈有為省麼嗎? p=*pr++; q=i/p; r=i-q*p; 這的意思是 長整形p=*pr(好怪是&,【此時pr就是那陣列】)還有為什麼要定義這兩個指標?這兩個指標在下面程式中都指向了陣列首位址 那麼乾脆就把所有pw,pr都替換成陣列首位址不就行了?可是替換後又不能得出結果。 為什麼? 解:你想陣列是以整體,向中國不可分割你用陣列好現在讓骨肉分離為什麼pw的值同時賦給了兩個整數? *pw++=2 這意思是pw=pw+2 吧pw+2得值付給了pw 就是pw+2 後面那個同理 為什麼再次把陣列的首位址賦給了pr? 問得好迴圈之後值都變了你說呢 其餘都是冢中枯骨 相信你也有功底 自己理解 不過樓主我還是感覺這程式好怪 還有別嫌我話多 衛生麼你不用for()函式 int x 10 p1 a x 3 x 3 3 陣列從0開始,3其實是第四個 b p1 x 3,p1 先執行p1 x 3,也就是指向x 3 因為p1定義成指標。p1 這時候先執行再加,這表示式仍然是3 c p1 x 2,p1 p x 2 x陣列的位址加2,也就是指向x 2 x 2,這時候p 同時也是... 這麼說吧,指標是以後資料結構的基礎,比如單鏈表,雙鏈表,二叉樹等等等等,全部都時指標做的,還有1720次對於現在的計算機來說,是個很小很小很小的數量級。指標學好了受益匪淺,並且也是程式設計今後必須的。指標的確是可以大大提高效率,但是要看你怎麼用,就和遞迴演算法一樣,另外,顯示位址是你語句的問題。比如... p p 你要看下 跟 哪個運算級高。p 的意思是 指標指導到後乙個元素 p 的意思是當前元素裡面的數值增加1 舉例int a int p a p 操作的結果是 a依舊2,1 p 為1 p 的結果的是 a 為3,1 p 為3 例如 char a a,b,c,d char p a p 表示,指標指向的位...
c語言關於指標的求解,C語言中關於指標的指標問題?
C 指標的問題,C語言指標問題
c 指標問題