C語言問題

2022-06-28 21:25:15 字數 1388 閱讀 4497

1樓:我才是小烏龜

1全部malloc用法

需要包含標頭檔案:

#include 'stdlib.h'

函式宣告(函式原型):

void *malloc(int size);

說明:malloc 向系統申請分配指定size個位元組的記憶體空間。返回型別是 void* 型別。

void* 表示未確定型別的指標。c,c++規定,void* 型別可以強制轉換為任何其它型別的指標。

從函式宣告上可以看出。malloc 和 new 至少有兩個不同: new 返回指定型別的指標,並且可以自動計算所需要大小。比如:

int *p;

p = new int; //返回型別為int* 型別(整數型指標),分配大小為 sizeof(int);

或: int* parr;

parr = new int [100]; //返回型別為 int* 型別(整數型指標),分配大小為 sizeof(int) * 100;

而 malloc 則必須由我們計算要位元組數,並且在返回後強行轉換為實際型別的指標。

int* p;

p = (int *) malloc (sizeof(int));

第一、malloc 函式返回的是 void * 型別,如果你寫成:p = malloc (sizeof(int)); 則程式無法通過編譯,報錯:「不能將 void* 賦值給 int * 型別變數」。

所以必須通過 (int *) 來將強制轉換。

第二、函式的實參為 sizeof(int) ,用於指明一個整型資料需要的大小。如果你寫成:

int* p = (int *) malloc (1);

**也能通過編譯,但事實上只分配了1個位元組大小的記憶體空間,當你往裡頭存入一個整數,就會有3個位元組無家可歸,而直接「住進鄰居家」!造成的結果是後面的記憶體中原有資料內容全部被清空。

malloc 也可以達到 new 的效果,申請出一段連續的記憶體,方法無非是指定你所需要記憶體大小。

比如想分配100個int型別的空間:

int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100個整數的記憶體空間。

另外有一點不能直接看出的區別是,malloc 只管分配記憶體,並不能對所得的記憶體進行初始化,所以得到的一片新記憶體中,其值將是隨機的。

除了分配及最後釋放的方法不一樣以外,通過malloc或new得到指標,在其它操作上保持一致。

2樓:

malloc 向系統申請分配指定size個位元組的記憶體空間。返回型別是 void* 型別。void* 表示未確定型別的指標。

c,c++規定,void* 型別可以強制轉換為任何其它型別的指標。

#include

main()

c語言問題,C語言問題!

prid32是個什麼?而且你的雙引號得加轉義符吧?去掉prid32前後的雙引號,另外prid32是否有定義?你的這個軟體支援c99或者c11嘛 就像vc6.0版本太老就不支援c99 看看軟體支不支援 沒有巨集定義,在標頭檔案下面加 define prid32 d c語言問題!因為s是一個指向floa...

c語言問題,c語言問題

include void main 定義f 0 1 f 1 1 for i 2 i 20 i 從2開始到19做迴圈,這裡你少打一個i f i f i 2 f i 1 例如當前i 2則f 2 f 0 f 1 2 迴圈繼續 i 3則 f 3 f 2 f 1 3 迴圈繼續.for i 0 i 20 i 從...

C語言問題,C語言問題,求助

數學水平是要的,重要的是邏輯思維!函式也是要的,沒那你就寫不出什麼好的程式!這函式又和課本上的數學函式有點不一樣!但不象數學函式那麼難,但比數學函式靈活,也有意思。可不是要所有課本的數學函式!課本數學可以不好,但是你邏輯思維一定要好,熊貓燒香知道吧,寫這程式的人只是中專畢業!英語前期是不需要的!因為...