2011-12-16 78 views
1

例如,我有:存儲一個指針的地址到內存

char* a = (char*) malloc(sizeof(char)); 
char* b = (char*) malloc(sizeof(char*)); 

我如何獲得的a地址到存儲器中,起始地址b

+2

你爲什麼需要這個? – SlavaNov 2011-12-16 23:00:14

+2

你想達到什麼目的?你在這裏做什麼(對於變量b)是爲一個「指向char的指針」分配空間,並將它分配給指向char的類型指針變量;我認爲你很困惑*變量類型*和*類型這個變量指向*這裏;通常「指向char的指針」的概念是指向「char」值,而不是「指向char的指針」...... – codeling 2011-12-16 23:00:36

+0

基本上我想要一個遞歸結構,需要指針指示它是一個自由插槽,指針後面的內容應指向下一個指針,指向下一個空閒插槽等。它有點像鏈接列表。 – Stackd 2011-12-16 23:47:48

回答

1

難道你不能只是做一個*b = a?或者我誤解了這個問題?

+0

這將是`* a =&b` – 2011-12-16 23:01:56

1

取決於你需要什麼(它不是完全清楚),你可以做b = a*b = &a(字面上你問的a到內存中的地址開始的地址b),或*b = a

1

如果你想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分配空間,因爲它們只是指向堆上的相同地址。然而,你必須小心,你也只有freeab指出的空間!

我也建議閱讀指針的想法(例如herehere)。

1

我首先要說的是前言本,因爲b實際上是將指向char*,你真的應該聲明並初始化這樣說:

char** b = (char**) malloc(sizeof(char*)); 

使用char**代替char*。但是,如果你已經知道了,但還是要b有型char*出於某種原因,那麼你只是寫:

*((char**) b) = a; 

它把b,就好像是一個char**,這樣你就可以存儲char*在裏面。