c語言問題,C語言問題 int p int malloc sizeof int

時間 2021-09-03 07:05:17

1樓:樂跑小子

int *p;//定義一個指向整型的指標變數p=(int*)malloc(sizeof(int));

/*建立(動態申請)一塊記憶體空間,建立的記憶體空間為一個整型變數的長度,並把建立的空間地址轉化成指向整型的指標賦值給前面的整型指標變數p*/

如果這塊動態記憶體不釋放,相當於把一個整型變數的地址給前面的指標例如:#include

#include

int main()

2樓:手機使用者

義例項實際上是指標陣列的定義。

指標陣列是指所定義陣列的每個陣列元素都是一個相應資料型別的指標,開設空間的操作可以應用迴圈語句進行,例如:對於char *p[10]; 可以應用

for(i=0;i<10;i++)

p[i]=(char *)malloc(sizeof(char)*n); //為每個指標申請開設n字元的儲存空間

開設後,對於p的使用與二維陣列的使用格式類似,可以有效的使用兩個下標,

如 p[0][0]='a';

還可以像每個指標中賦值字串: p[2]="beijing"; 當然字串長度應該小於n。

而陣列指標,是指定義為指向某個固定大小順序空間的指標,定義的格式如下:

char (*pa)[10]; //定義一個指向擁有10元素的字元陣列的指標,

int (*p)[10];

應用格式可以參考下述程式,申請空間、賦值、輸出後,可以觀察到100被賦值到第五行第十個元素,指標可以像二維陣列一樣通過兩個下標引用所申請開設的空間。

#include

main()}

3樓:小飛花兒的憂傷

sizeof是個關鍵字,用來計算指定資料型別或指定變數的空間大小(以位元組為單位)

int a;

sizeof(a) = sizeof(int) = sizeof a;

malloc的引數是位元組長度

4樓:匿名使用者

判斷int型別的長度符

作用就是返回一個物件或者型別所佔的記憶體位元組數。

5樓:匿名使用者

sizeof (int)是獲得int型資料的大小,整個語句是動態分配sizeof (int)大小的記憶體,並用指標p指向這個分配的局域。

6樓:匿名使用者

sizeof()函式是返回指定資料型別的儲存空間大小,sizeof(int)返回int的儲存空間的大小,int的儲存空間需要2位元組。

7樓:朱珈藍賀撥

sizeof(int)就是求int這種資料型別所需的儲存空間的大小,類似的還可以用sizeof(float)等等

8樓:匿名使用者

c語言中判斷資料型別長度符

1) sizeof( object ); // sizeof( 物件 );   2) sizeof( type_name ); // sizeof( 型別 );   3) sizeof object; // sizeof 物件;

9樓:匿名使用者

補充一下樓上的, 以前分長整形和短整型,短整形是2個位元組,長的是4個位元組。

但是現在已經不分長短了,統一4個位元組。

10樓:黃逸代霞綺

malloc申請了4個位元組正確,p指標不是存放第一個位元組的資料,而是存放第1個位元組的指標(地址),在32位系統下,任何指標佔記憶體都是4個位元組,而p也是4個位元組,所以就能儲存申請到的第1個位元組的指標。

計算機c語言中 int *p; p=(int*)malloc(sizeof(int)); 什麼意思

11樓:匿名使用者

申請一個int大小的記憶體空間,這個空間的地址以int型別賦給p。

12樓:

動態申請一塊記憶體,長度為一個int的位元組數,視作業系統16/32/64而定。

記憶體首地址儲存在變數 p 中。

13樓:匿名使用者

int *p;//定義一個指向整型的指標變數p=(int*)malloc(sizeof(int));

/*建立(動態申請)一塊記憶體空間專,屬建立的記憶體空間為一個整型變數的長度,並把建立的空間地址轉化成指向整型的指標賦值給前面的整型指標變數p*/

如果這塊動態記憶體不釋放,相當於把一個整型變數的地址給前面的指標例如:#include

#include

int main()

c語言高手進 int * p = (int *)malloc(sizeof(int));

14樓:手機使用者

義例項實際上是指標陣列的定義。

指標陣列是指所定義陣列的每個陣列元素都是一個相應資料型別的指標,開設空間的操作可以應用迴圈語句進行,例如:對於char *p[10]; 可以應用

for(i=0;i<10;i++)

p[i]=(char *)malloc(sizeof(char)*n); //為每個指標申請開設n字元的儲存空間

開設後,對於p的使用與二維陣列的使用格式類似,可以有效的使用兩個下標,

如 p[0][0]='a';

還可以像每個指標中賦值字串: p[2]="beijing"; 當然字串長度應該小於n。

而陣列指標,是指定義為指向某個固定大小順序空間的指標,定義的格式如下:

char (*pa)[10]; //定義一個指向擁有10元素的字元陣列的指標,

int (*p)[10];

應用格式可以參考下述程式,申請空間、賦值、輸出後,可以觀察到100被賦值到第五行第十個元素,指標可以像二維陣列一樣通過兩個下標引用所申請開設的空間。

#include

main()}

15樓:樂跑小子

int *p;//定義一個指向整型的指標變數p=(int*)malloc(sizeof(int));

/*建立(動態申請)一塊記憶體空間,建立的記憶體空間為一個整型變數的長度,並把建立的空間地址轉化成指向整型的指標賦值給前面的整型指標變數p*/

如果這塊動態記憶體不釋放,相當於把一個整型變數的地址給前面的指標例如:#include

#include

int main()

16樓:程式新手

前面的 (int *)是強制轉換,後面的malloc(sizeof(int)); 是在記憶體中建立一個連續長度為sizeof(int)的區間之後再返回該區間的首地址給int * p

17樓:小飛花兒的憂傷

sizeof是個關鍵字,用來計算指定資料型別或指定變數的空間大小(以位元組為單位)

int a;

sizeof(a) = sizeof(int) = sizeof a;

malloc的引數是位元組長度

18樓:匿名使用者

malloc()函式的作用是分配製定位元組數的空間sizeof()為單目運算 求出對應型別所佔用的位元組數(型別名)為單目運算 為強制型別轉換

要注意的是 malloce函式申請得到的空間是無型別的空間 必須強制轉換成對應指標可以指向的空間的型別

這裡定義的是int *p 所以p指標只能指向int型空間sizeof(int) 求得int型別所佔的位元組數malloc(sizeof(int)) 申請一個跟int所佔的空間大小一樣的空間

(int*)malloc(sizeof(int)) 將申請得到的空間地址轉換成了int型別空間地址

最後就可以賦值給指向int型空間的p指標了

c語言中動態記憶體分配的問題 int * p=(int*)malloc(8) 這樣理解對不對:(in

19樓:匿名使用者

(int*)表示將動態分配的8個位元組的記憶體空間型別強制轉換為 "1" 個指向int的指標型別

另外上述**的寫法既無可讀性,也無可移植性

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

c語言 int *a = (int*)malloc(n*sizeof(int)); 是什麼意思呀

20樓:天雲一號

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存入到哪個記憶體單元(因為指標未指向具體的記憶體單元(此時稱該指標為野指標)),所以執行的時候會出錯(編譯沒錯)。

21樓:匿名使用者

動態分配記憶體給指標a,類似於分配a[n]大小的資料空間(n是常量時),只是這種方式下,n可以作為一個變數執行時確定,較為靈活,但是也要相應執行free操作,否則會出現記憶體洩漏。

22樓:匿名使用者

定義一個指標,為該指標分配一個一塊n個int空間的記憶體

當然malloc還可能會返回null就是了

23樓:匿名使用者

sizeof(int)就是int型別佔用的記憶體大小

c語言問題,C語言問題。

考驕 用指標將兩個字串連結接起來,前一個while迴圈,確定s1字串走完,第二個while開始將s1的逐個字元複製給s1走完,也就是末尾,這樣就可以把字串都匯入到s1中 最後一個空寫的應該寫return s1 長魚修韋 很久沒碰這東西了。我來解釋下 第一個while的迴圈是為了讓指標指向第一個字串的...

C語言問題,c語言問題?

自我程式設計 列印輸出乙個ok。因為前面迴圈for語句有分號結束。所以後面的printf語句不在迴圈內,不受迴圈語句影響。 理佑平鄲胭 結果是22 7 7 8 22 你可以將 i i i i是先 1再計算,還有這裡的運算順序是從左到右,所以應該是7 7 i 14 8 22 前兩個相加時,i先加1,加...

c語言問題,C語言問題?

這個問題說難不難,但理解可能有點玄乎而已,但是打個比方來理解就太容易掌握啦!就是說scanf的認定讀取,比如你單純的scanf c ch 那麼實際上已經認定了第乙個字元出現就把它賦予給ch,如果是你的scanf c 前面多了乙個空格,所以就認定了出現第乙個空格後的字元賦予給ch,如果寫成這樣 sca...