例如,我有:存儲一個指針的地址到內存
char* a = (char*) malloc(sizeof(char));
char* b = (char*) malloc(sizeof(char*));
我如何獲得的a
地址到存儲器中,起始地址b
?
例如,我有:存儲一個指針的地址到內存
char* a = (char*) malloc(sizeof(char));
char* b = (char*) malloc(sizeof(char*));
我如何獲得的a
地址到存儲器中,起始地址b
?
難道你不能只是做一個*b = a
?或者我誤解了這個問題?
這將是`* a =&b` – 2011-12-16 23:01:56
取決於你需要什麼(它不是完全清楚),你可以做b = a
,*b = &a
(字面上你問的a
到內存中的地址開始的地址b
),或*b = a
。
如果你想b
指向一個字符指針(如可以通過看你的malloc語句,這樣你對一個指針分配空間爲char推斷),然後b
實際上應該是類型指針指向char,像這樣:
char* a = (char*) malloc(sizeof(char));
char** b = (char**)malloc(sizeof(char*));
據我瞭解,你想達到什麼是分配a
指向到b
所指向的地方的地址?這應該是這樣的,那麼:
*b = a;
如果你不是隻想b
是一個字符指針(和你實際申報b
),並希望它指向相同的地址a
,那麼這樣做:
char* a = (char*)malloc(sizeof(char));
char* b = a;
這使得b
指向同一位置a
;但是你也不需要爲b分配空間,因爲它們只是指向堆上的相同地址。然而,你必須小心,你也只有free
a
和b
指出的空間!
我首先要說的是前言本,因爲b
實際上是將指向char*
,你真的應該聲明並初始化這樣說:
char** b = (char**) malloc(sizeof(char*));
使用char**
代替char*
。但是,如果你已經知道了,但還是要b
有型char*
出於某種原因,那麼你只是寫:
*((char**) b) = a;
它把b
,就好像是一個char**
,這樣你就可以存儲char*
在裏面。
你爲什麼需要這個? – SlavaNov 2011-12-16 23:00:14
你想達到什麼目的?你在這裏做什麼(對於變量b)是爲一個「指向char的指針」分配空間,並將它分配給指向char的類型指針變量;我認爲你很困惑*變量類型*和*類型這個變量指向*這裏;通常「指向char的指針」的概念是指向「char」值,而不是「指向char的指針」...... – codeling 2011-12-16 23:00:36
基本上我想要一個遞歸結構,需要指針指示它是一個自由插槽,指針後面的內容應指向下一個指針,指向下一個空閒插槽等。它有點像鏈接列表。 – Stackd 2011-12-16 23:47:48