指標變數和非指標變數的本質區別

2021-06-16 15:52:10 字數 512 閱讀 6007

指標變數本質上是指乙個儲存了位址的(乙個)變數。因此無論哪種型別的指標,變數占用的位址是固定的,32位cpu則為4bytes,16為cpu則為2bytes。

而變數占用的記憶體空間直接和變數型別相關,因為變數需要保持和該型別所有的資料。

下面看乙個例子:

#include

typedef struct

str;

typedef struct

name1;

typedef struct

name2;

void main()

以上**,由於name1結構體包含了乙個str型別的變數,因此,它的大小和str結構體的大小相同。而str結構體包含了兩個int資料,乙個指標,因此,它的大小為12bytes.

而name2結構體,其中只有乙個指標,由於是32位的cpu,乙個位址空間占用4bytes,因此它的大小為4.

執行結果:

sizeof(name1) is 12

sizeof(name2) is 4

屬性和公用變數的本質區別 c

問題為 public class myclass set 我是個初學者。請問 myclass.a 和 myclass.getval 不是一樣用麼?有什麼本質上的區別,類屬性的概念有點多餘呀?請前輩指點一下。謝謝 答案 首先,你的myclass.a和myclass.getval使用方法是錯的,a和ge...

C 指標與引用的本質區別

看如下例子 int a 0 int型變數a int pi a 指向int型的指標變數pi int ri a int型的引用ri,引用的變數為a int rt int 0x01 int型的引用rt,引用的記憶體位址為0x01 到了編譯器,產生四個符號,a,pi,ri,rt.rt標示了一塊記憶體,這塊記...

C語言 指標變數本質

c語言指標是乙個經常使用的變數,可是經常在二級指標 指標中搞混,指標的本質就是乙個int型的變數,只不過這個變數是記憶體塊的位址,通過在這個變數前面加星號可以間接的訪問這個記憶體塊的內容。通過下面的示例可以清晰的明白指標的本質,include typedef struct teracher intg...