C語言 如何輸出指標所指向空間的大小

時間 2023-06-06 11:48:03

1樓:暨誠李羅

c語言無法輸出指標所指向的空間的大小!

一般,我們獲取一個變數所佔記憶體空間的方法為:sizeof(變數名或型別名),如:

int a;

int aa[10];

int *p=aa;

現在的機器一般為32位或64位機,int型別佔四個位元組,所以輸出4

printf("sizeof( a )=d", sizeof(a) )輸出4

printf("sizeof( aa )=d", sizeof(aa) )輸出4*10=40

輸出4 ?見下面說明。

printf("sizeof(int *)d", sizeof(int *)輸出4 ?見下面說明指標變數定義:用來儲存記憶體地址的變數。

指標變數中儲存的是記憶體地址資料(一個整型數),而不是真正的資料,真正的資料是在地址中存放的。所以,指標變數實際上就是個整型變數,用sizeof命令去獲取任意型別的指標變數都會得到4。

指標變數儲存的是一個儲存空間的首地址,究竟這個空間有多大,可以儲存多少個資料,這是分配空間時所決定的。單獨看一個地址值,是看不出其空間大小的。如:inta;

intaa[10];int*p

定義一個指標變數。p=aa

指向陣列aa,aa的資料空間是40位元組,10個整數。

p=&a;//指向一個整型變數,它的儲存空間是4位元組,一個整數。

2樓:務玉花姬戌

堆上分配的空間要手動釋放,棧上的空間由系統釋放。

比如用malloc分配的是在堆上的,所以要用free手動釋放。

棧上空間比如說函式傳如的值,由系統自動釋放。

比如。int*a

malloc(100);

要free(a)釋放a指向的記憶體,但a這個變數所佔的空間不用管它,系統自動會處理的。

如果對您有幫助,請記得為滿意答案,謝謝!祝您生活愉快!

3樓:檢春歸媚

因為int是一個值型別的,所以不能直接賦值給p(p是int指標型別)。因此二樓加括號是對的。通過取p的地址轉化成對應的指標,然後直接把b賦值給它。

另外一種方法:

a->p=&b;

把b的地址賦值給a中的p指標。

4樓:韓亭晚區溪

用sizeof(p)計算出的是指標的大小,固定值4,sizeof(*p)就可以計算出指標所指的空間的大小。

5樓:車芬邴巨集放

就是指向的型別的大小。

6樓:匿名使用者

c++裡有_msize,但是c裡面沒有這樣的函式,唯一的方法,可以試試 memcpy+strlen,把指向空間資料拷貝出來轉換成char相關型別,然後用strlen來求,記得別忘記memset初始化轉向的空間噢,不然可能會計算出錯。

7樓:網友

如果說你的意思是獲得a型別指標 a_p 所指的實體a的大小:

如果你知道指標的型別,那麼你就能知道 它所指向的實體型別的空間大小;

可以使用 sizeof(a) 或者sizeof(*a_p) 還獲取它所指向內容的大小。

這只是在指標指向內容被你認為是特定型別的前提下。

c的不安全特性之一,就是指標想怎麼指就怎麼指,所以指標只能說 你把它指向的內容當做什麼,但不代表內容就是什麼。

8樓:匿名使用者

指向空間大小?

什麼型別的指標指向的空間就是幾位元組。

9樓:匿名使用者

就是指向的型別的大小。

10樓:趙立懷

要看指標的資料型別!

c++一個指標大小

11樓:聽不清啊

在dev-c++中,每個指標的大小都是8個位元組的。

12樓:靠譜兒媽媽

大小是4個位元組,儲存內容是一個地址。

定義一個指標,必須賦予這個指標一塊記憶體空間,可以用malloc類的命令分配,也可以指向一塊既有的記憶體空間。

c語言指標輸出,C語言指標輸出 char str 2 printf c n , str printf x n , str printf x n ,str

在char str 2 中,str指向了字元 2 的地址,str的記憶體中裝的是字元 2 的地址,但自己也有一個地址,它的地址就是 str。getmemory str 傳入的是指標str自己的記憶體地址,而非它指向的地址 getmemory str 傳入的是指標str指向的地址,而非它自己的地址 首...

關於c語言的指向指標的指標和指標

這個問題很好啊,其實如果你用printf列印p1和p的話,你會發現這兩個值是相等的,因為他們都是指標,c語言是不區分指標之間的差別的,一切指標都是指標,不管他指向什麼,但是當前面加上 號後,他們就有了區別,p1很顯然是一個char型別,而 p這是一個char 型別。printf會把p1指向地址中的值...

c語言中如何輸出各種常量,C語言中如何輸出各種常量

風若遠去何人留 c語言輸出常量和輸出變數是相同的。均可以用printf帶各種格式符號執行輸出。常用的型別包括 1 整型,int,使用格式為 d 2 短整型,short,使用格式為 h 3 長整型,long,使用格式為 ld 4 字元型,char,使用格式為 c 5 字元指標型,char 使用格式為 ...