指標型別與指標所指向的型別指標型別與指標所指向的型別

2021-03-07 00:31:01 字數 5504 閱讀 5378

1樓:匿名使用者

不一定要相同。

以前的機器有near和far指標,現在的機器一般都是32位指標。也就是說計算機用一個32位地址值定址。

所以,所有指標其本身是佔用long位元組大小的。

指標型別其實是告訴編譯器怎麼解釋指標所指向物件。當一個物件有資料成員,或者可以拆分成多部分資料物件時,可以做指標的型別轉換。

2樓:匿名使用者

不一定。

例int a = 65; 其實就是字元a的ascii碼的值char * b;

b = (char*)&a;

將b指向a的地址,這個也是可以的,只是需要強制轉換一下這時你可以列印下b的內容

printf("b = [%s]",b);

可以得到 b = [a]

#include

#include

void main()

3樓:匿名使用者

指標型別就是指該指標所指向的實體的型別。要相同。

其實指標本身沒有型別,因為都是地址。

4樓:菜鳥升級中

指標的定義是通過指標找到記憶體單元的一個地址並從地址內找到相應的資料

指標的型別是告訴編譯器該指標指向什麼型別,如果不一致,會導致提取響應資料的時候溢位或缺失。

一個特例是void型指標,他可以指向任何變數,沒有型別=所有型別,學好再用,很危險

5樓:匿名使用者

void *p 可以指向任何型別

只是在轉換的時候前面加上型別

int *pint = null;

void *p = pint;

cout<<(int *)p<

6樓:匿名使用者

指標變數賦值、傳遞是沒有問題的,

但是在使用*做引用操作的時候,

型別不同,效果就不同,那肯定有設計邏輯上的錯誤。

「指標的 型別」和「指標所指向的型別」有什麼區別

7樓:匿名使用者

你說的對,在32機器裡,指標的容量就是4位元組的。指標的型別實際上就是指標所指向的變數的型別。

為什麼在宣告指標的時候要宣告出它所指向的變數的型別呢?

因為,例如: int * p;

在以後的程式中有可能要做 int a=*p的操作,所以* ,即取值操作就要知道p所指向的空間裡存放的變數的型別,根據不同的型別,*操作會讀取不同長度的連續空間,例如:int 4位元組;

double 8位元組。

8樓:匿名使用者

只有「int型別的指標」才能用來指向「int型別的值」;其他型別的指標不行。

指標是指向記憶體種的一塊記憶體空間,而這塊空間的大小要根據指標指向的資料的型別的長度來分配。

比如:int型需要4個位元組的空間,long需要8個位元組的空間。

所以在定義指標的時候要指明指標的型別,這樣程式才知道應該在記憶體中保留多大的空間給這個指標。

定義指標時指向不同型別的指標變數有什麼相同和不同之處

9樓:岔路程式緣

相同之處:(1)指標的名字元合變數起名規範,如a、bw1、g_as、_jk6cx等,都可以作為指標名字,而不用管它是指向哪種型別的指標。(2)宣告時,都要在指標前面加一個*。

不同之處:宣告時,不同型別指標的要用不同的型別說明符。如指向整型變數的指標用int宣告,指向字元或字串的指標用char宣告,指向浮點型數字的指標用float宣告等等。

一些例項:

char *str;

int *p_2;

double *point1;

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

10樓:時方仲孫曄

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

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

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

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

i=3;

*i_pointer=3;

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

11樓:貝茉光盼香

在c中,

指標只有3種:

指向簡單變數的,

指向結構體變數的,

指向函式的.

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

基本都是一樣的,

等於地址寬度.

在16位的地址的系統裡,

用段:偏移

來表示一個地址,

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

稱為far指標,

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

但是在32位系統中,

指標大小是統一的.

在c++中,

指向簡單變數,

簡單結構體物件,

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

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

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

可能會更大一些.

你可以用

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

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

最後的結果是:

一般而言,

指標大小是固定的,

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

然而並不總是這樣.

12樓:王一是個好青年

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

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

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

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

13樓:逢茂表正奇

c,指標3種:

指向簡單變數

,指向結構體變數

,指向函式.指向

型別關,

基本都,

等於址寬度.

16位址系統,

用段:偏移

表示址,

用偏移候(段內)稱

near指標,

段偏移都用

候(跨段),

稱far指標,

far指標佔用空間

於near指標.

32位系統,指標

統.c++,

指向簡單變數,

簡單結構體

象,簡單函式指標c

.,於繼承

象,指標

能需要記錄

些額外資訊,能更

些.用sizeof(xx)

測試各種指標

,需要注意,同

編譯器結能.

結:般言,

指標固定,並

其指向象型別

改變.並總.

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

14樓:匿名使用者

指標變數所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個位元組。

15樓:安城百合子

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

16樓:

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

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

17樓:匿名使用者

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

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

18樓:匿名使用者

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

19樓:匿名使用者

所有指標 都是佔來用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了

指標的型別與指標所指向的型別一致嗎?

20樓:匿名使用者

可以不一致。。。指標的型別決定了 對指向資料的操作方式。如果將一個char*指標指向一個struct結構,那這個指標只能按char的方式訪問這個struct的資料

21樓:匿名使用者

對~各種型別指標需要和指標所指向型別一致才合法

請問c++中 「指標所指向的型別」是指指標的型別還是指標所指向的元素的型別?

22樓:匿名使用者

指標所指向的元素的型別

比如int * p代表指標p指向的元素是一個int

23樓:匿名使用者

指標指向的型別時指標所指向記憶體中元素的型別,指標經過強制轉換,可以指向不同型別的元素,唯一的區別就是不同型別指標的++和--操作是按照指標型別的位元模型來實現的

24樓:匿名使用者

請參bai考這du

位大zhi俠dao的帖子

專:屬

如何定義指向函式的指標

一 定義一個函式指標的方法如下 返回值型別 指標變數名 形參列表 1 int func int x 宣告一個函式 2 int f int x 宣告一個函式指標 3 f func 將func函式的首地址賦給指標f 二 函式指標的用法 函式指標的應用 指標變數名 引數列表 如 int c ptr a,b...

指向多維陣列的指標變數問題

int p 4 這是一個指向一維陣列的指標,該語句表示定義一個指向由4個整型陣列元素組成的一維陣列的指標變數p,p儲存該一維陣列的起始地址。也就是說,樓主可以把int a 3 4 看成是一個包含4個元素的一維陣列,不過,樓主要注意的是,這個陣列中的元素也都是一個包含三個元素的整形一維陣列。p存放的就...

怎麼理解指向二維陣列的陣列指標是二級指標

一維陣列的名其實就是指標,如int a 4 a就相當於一個指標 int p a 沒錯 但是二維陣列 int aa 2 3 這個時候是不能用int pp aa 是錯誤的。實際上二維陣列的第一維是int ab 3 是個指標陣列,不是陣列指標。這個時候int ab 3 是與 int 不同的。所以接受二維陣...