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 使用格式為 ...