1樓:天雲一號
int *a=(int *)malloc(n*sizeof(int)); 表示定義一個int型別的指標變數a,並申請n*sizeof(int)個位元組(即4*n個位元組)的儲存空間。
malloc是在c語言中是一個申請記憶體單元的函式。
函式原型:void *malloc(unsigned size);
功 能:分配size個位元組的記憶體空間舉例說明如下:
// 下面的定義方法是正確的
int *a=(int *)malloc(n*sizeof(int)); // 定義指標,並分配記憶體單元
*a = 4; // 將值存入到指標a所指向的記憶體單元中// 下面的定義方法就會出錯
int *a; // 定義指標,沒有分配記憶體單元*a = 4; // 此時系統不知道該將4存入到哪個記憶體單元(因為指標未指向具體的記憶體單元(此時稱該指標為野指標)),所以執行的時候會出錯(編譯沒錯)。
2樓:匿名使用者
動態分配記憶體給指標a,類似於分配a[n]大小的資料空間(n是常量時),只是這種方式下,n可以作為一個變數執行時確定,較為靈活,但是也要相應執行free操作,否則會出現記憶體洩漏。
3樓:匿名使用者
定義一個指標,為該指標分配一個一塊n個int空間的記憶體
當然malloc還可能會返回null就是了
4樓:匿名使用者
sizeof(int)就是int型別佔用的記憶體大小
計算機c語言中 int *p; p=(int*)malloc(sizeof(int)); 什麼意思
5樓:匿名使用者
申請一個int大小的記憶體空間,這個空間的地址以int型別賦給p。
6樓:
動態申請一塊記憶體,長度為一個int的位元組數,視作業系統16/32/64而定。
記憶體首地址儲存在變數 p 中。
7樓:匿名使用者
int *p;//定義一個指向整型的指標變數p=(int*)malloc(sizeof(int));
/*建立(動態申請)一塊記憶體空間專,屬建立的記憶體空間為一個整型變數的長度,並把建立的空間地址轉化成指向整型的指標賦值給前面的整型指標變數p*/
如果這塊動態記憶體不釋放,相當於把一個整型變數的地址給前面的指標例如:#include
#include
int main()
p=(int*)malloc(sizeof(int)*(n+1))是什麼意思
8樓:普壽謇密
就是給p分配n+1個整數空間
相當於p
=new
int(n+1);即p為n+1大小的整數陣列!
9樓:運嘉禽書
1、sizeof(int):sizeof是操作符,這裡是計算int型別資料所佔記憶體大小,根據不同的系統會有不同的值,在32位機器上其值為4
2、m*n*sizeof(int):m和n應該為變數或預定義值,其計算結果應為一數值
3、malloc(m*n*sizeof(int)):意思是申請上述過程計算的數值大小的記憶體
4、p應為一指向int型別陣列的指標,其值為上述過程分配的記憶體首地址
C語言問題,C語言問題C語言問題
選a首先,空格也是一種字元,b d選項分別把空格賦給了c1,c1 其次,c選項不完整,排除 不僅a這樣,10a20b也是可以的。 聽不清啊 答案a 10a 20b cr 是正確的。因為scanf d c 時,會忽略數字前面的空格,遇到非數字字元就會結束讀取 非數字字元會留待下一次讀取,即被後面的 c...
c語言!!求助,C語言求助!!!
沒什麼問題,兩題給出的答案都是正確的。第2題 後面按c語言要求帶上規定的字元或數字,構成轉義字元,因此要想將 賦給字元變數ch,需要定義為 ch 而不是ch 選項a是錯誤的。其餘選項都是正確的。選a第9題 011表示八進位制數,轉為十進位制數是9,執行printf語句,a,是a先自增1 9 1 10...
C語言問題,C語言問題
符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...