指標的資料型別為什麼要跟所指向的資料的型別一致,不是說所有的指標變數佔用的記憶體大小是相同的嗎

2021-04-18 03:49:47 字數 2961 閱讀 2331

1樓:匿名使用者

指標變數所bai需要的儲存

空間的確du是相同的zhi

。它都需要最高字長dao的儲存空間。

但在指標指向內不同型別的容

資料型別空間時,指標操作是不同的,見下示例**:

unsigned char * ptrchar;

unsigned int  * ptrint;

ptrchar=(unsigned char *)0x0000;

ptrint=(unsigned int *)0x0000;

ptrchar++;

ptrint++;

最後兩個指標++操作,看**都是用的加加操作符,但實際上,指向無符號char型資料的指標,在加加操作後,ptrchar中的值是0x0001,因為每個無符號char只佔用乙個位元組,而ptrint在加加操作後,其值是0x0004,因為每個整型佔用4個位元組。

2樓:安城百合子

這是c語言的語法要求,因為不同型別的指標,在作+-運算時,它的步長是不一樣的。

3樓:

所有的指標變數佔用的記憶體大小是相同的,這個記憶體中儲存的不是資料的值,而是指標的

回值,指標的值答是乙個記憶體位址,也就是指標指向資料的首位址,根據這個位址只能得到指標指向資料的開始位置,並不知道這是什麼型別的資料,所以指標的型別就決定了資料的型別

4樓:匿名使用者

你是什麼指標?很多語言都有指標的。

指標儲存的是資料的首位址,它指向和它同一型別的資料。跟佔用多少空間沒關係。用int型指向int型,double指向double型,等等。如果不匹配會發生錯誤。

5樓:匿名使用者

是的,它只是要知道你指向的資料是什麼型別而已。

6樓:匿名使用者

所有指標 都是佔來用4個位元組這個是自沒錯

但是為什麼bai不能用du呢?給你舉個例子。

int a = 0x00000fff;

char *p = &a;

printf("%d\n", *p);

結果是255。也zhi

就是說 每一dao個型別的指標所取的bit長度不一樣!char型別佔用8bit, int 32bit,short 16bit。

上邊這個例子不好

由於 是有符號的 所以255 打出來是-1改一下int a = 0x00000f0f;

這樣的話就是15了

指標指向不同型別資料時,指標變數佔用多大空間?

7樓:時方仲孫曄

變數的指標就是變數的位址。存放變數位址的變數是指標變數。即在c語言中,允許用乙個變數來存放指標,這種變數稱為指標變數。

因此,乙個指標變數的值就是某個變數的位址或稱為某變數的指標。

為了表示指標變數和它所指向的變數之間的關係,在程式中用「*」符號表示「指向」,例如,i_pointer代表指標變數,而*i_pointer是i_pointer所指向的變數。

因此,下面兩個語句作用相同:

i=3;

*i_pointer=3;

第二個語句的含義是將3賦給指標變數i_pointer所指向的變數。

8樓:貝茉光盼香

在c中,

指標只有3種:

指向簡單變數的,

指向結構體變數的,

指向函式的.

他們的大小和指向的型別無關,

基本都是一樣的,

等於位址寬度.

在16位的位址的系統裡,

用段:偏移

來表示乙個位址,

當只用偏移的時候(段內)稱為near指標,當段偏移都用的時候(跨段),

稱為far指標,

far指標佔用空間大於near指標.

但是在32位系統中,

指標大小是統一的.

在c++中,

指向簡單變數,

簡單結構體物件,

和簡單函式的指標是和c一樣的.

但是,對於有多繼承的物件,

指標可能需要記錄一些額外的資訊,

可能會更大一些.

你可以用

sizeof(xx)來測試各種指標的大小,需要注意的是,

不同的編譯器結果可能不一樣.

最後的結果是:

一般而言,

指標大小是固定的,

並不因為其指向的物件型別而改變.

然而並不總是這樣.

9樓:王一是個好青年

指標變數佔用空間大小等於位址寬度。

指標變數的大小和指向的型別無直接關聯,基本都是一樣的,等於位址寬度。

同一編譯器下,同一編譯選項下所有型別的指標變數大小都是一樣的,指標變數的大小是編譯器所對應的系統環境所決定的,或者說是由編譯器決定的。

指標變數是指存放位址的變數。因位址的改變而做出指定性質的衡量變法。

10樓:逢茂表正奇

c,指標3種:

指向簡單變數

,指向結構體變數

,指向函式.指向

型別關,

基本都,

等於址寬度.

16位址系統,

用段:偏移

表示址,

用偏移候(段內)稱

near指標,

段偏移都用

候(跨段),

稱far指標,

far指標佔用空間

於near指標.

32位系統,指標

統.c++,

指向簡單變數,

簡單結構體

象,簡單函式指標c

.,於繼承

象,指標

能需要記錄

些額外資訊,能更

些.用sizeof(xx)

測試各種指標

,需要注意,同

編譯器結能.

結:般言,

指標固定,並

其指向象型別

改變.並總.

在c中等是不是符號兩邊的資料型別要相同啊例如

嗯,符號兩邊必須是同樣的資料型別 這些符號兩邊可以是表示式,可以是變數,可以是常量,列舉值等等 那麼就會用表示式的返回值型別,變數值型別,常量的型別進行比較。只有型別相同才可以比較。如果型別不同,那麼編譯器會進行優化,例如 你將整形int值和雙精度型double值進行比較,編譯器會將整形轉化為雙精度...

幾進製的數和資料型別有什麼聯絡呀?比如說十六進位製數是什麼資料型別

數的進製和型別沒有關係 十六進位製數可以是int,long,double long等等 數的進製跟型別沒啥關係,它只是用於編碼用的,如用乙個八位的二進位制編碼表示乙個char型的字元。而數的型別是指這個資料是整數 字元還是小數什麼的 byte和16進製制有什麼聯絡和區別?byte是計算機資料單位,1...

為什麼孩子要跟父親姓,為什麼孩子要隨父親的姓氏,有什麼由來

人類社會分為母系社會和父系社會兩個階段。剛開始是母系社會,那時候男人打獵,女人在家養牲畜和種糧食,因為工具落後,男人打的獵物往往比女人種養的少,所以家庭中以女人為主,那時是隨母姓。後來,隨著生產力的發展,先進工具的使用,男人的作用越來越大,家庭開始以男人為主,就變成父系社會,所以跟著父親姓。這跟血緣...