導航:首頁 > 創造發明 > malloc函數創造的數組

malloc函數創造的數組

發布時間:2021-01-14 13:49:02

❶ 用malloc函數動態分配內存來建立一個一維數組

int * Createl(int n)
{
//int *array=NULL; //這行不要!!! 這里用的是局部變數,沒有付給全局變數。

array=(int *)malloc(sizeof(int)*n); //加一個強制轉換
//return &array[0]; //這里也版不對,改權成下面的
return array;

}

❷ C語言「堆」申請為什麼用malloc函數,用數組不行嗎

1、這個涉及兩個復存儲區域,堆和制棧,用malloc申請的空間在堆上,char a[10]這個是在棧上。堆和棧最重要一個區別是,棧是系統管理的的,他負責回收和釋放,所以有個概念叫作用域,變數的作用域一結束,棧就回收變數的資源。但是堆是程序員管理的,程序員不釋放,除非進程結束,這個空間就一直在那,就有了一定靈活性。
2、當無法知道內存具體位置的時候,想要綁定真正的內存空間,就需要用到動態的分配內存,即malloc函數。
malloc函數原型:extern void *malloc(unsigned int num_bytes);
頭文件:#include <stdlib.h>
功能:分配長度為num_bytes位元組的內存塊
返回值:如果分配成功則返回指向被分配內存的指針(此存儲區中的初始值不確定),否則返回空指針NULL。當內存不再使用時,應使用free()函數將內存塊釋放。函數返回的指針一定要適當對齊,使其可以用於任何數據對象。
說明:關於該函數的原型,在以前malloc返回的是char型指針,新的ANSIC標准規定,該函數返回為void型指針,因此必要時要進行類型轉換。

❸ malloc函數定義double型數組

double *a=(double *)malloc(n*sizeof(double));
a[0]=xxx;
只要定義一個對應類型的指針就可以了,因為數組本質可內以看成是通過指針運算取得每個元素的地址,進而容取得對應的值,而不同的指針類型的運算減的法則就是加上對應的n個單位,比如char * a和 int * a ;同樣執行a++操作結果是不同的,因為char 的基本單位是1,而int一般是2或4

❹ 怎麼用malloc函數分配這樣大小的數組。

int
**buff;
buff
=
(int**)malloc(sizeof(int*)*x);
=>分配一個int*的數組,其中有x個int*個指針
for(int
i
=
0;
i
<
x;
i++)
{
*(buff+i)
=
(int*)malloc(sizeof(int)*y);
=>再分配每個int*指向的數組,每個數組裡面有y個int
}
這是版採用這權種兩級指針的方法進行分配

❺ C語言用malloc函數定義數組

int* arr;
int n = 5;
arr = (int*)malloc(n*sizeof(int));

然後抄就定義好了呀,這就是你需要的那種malloc分配空間的數組,使用結束需要釋放掉,free(arr)。

❻ c語言:怎樣用malloc函數動態分配二維數組,使之可輸入數組的行數和每行的列數。

假設我需要一個nrows、ncolumns數組,則可以用以下幾種方法動態分配空間:
1.動態數組的成員都可以用正常的數組下標 Array[i][j]
#include <stdio.h>
#include <stdlib.h>
void main()
{
int nrows,ncolumns;
int **Array;
int i,j;
printf("please input nrows&ncolumns:\n");
scanf("%d%d",&nrows,&ncolumns);
Array=(int **)malloc(nrows*sizeof(int *));
for(i=0;i<ncolumns;i++)
Array[i]=(int *)malloc(sizeof(*Array));
for(i=0;i<nrows;i++)
{
for(j=0;j<ncolumns;j++)
{
Array[i][j]=1;
printf("%d ",Array[i][j]); //動態數組的成員都可以用正常的數組下標 arrayx[i][j]
}
printf("\n");
}
free(Array);
}
2.讓數組的內容連續, 但在後來重新分配列的時候會比較困難, 得使用一點指針算術:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int nrows,ncolumns;
int **Array;
int i,j;
printf("please input nrows&ncolumns:\n");
scanf("%d%d",&nrows,&ncolumns);
Array=(int **)malloc(nrows*sizeof(int *));
Array[0]=(int *)malloc(nrows*ncolumns*sizeof(int));
for(i=1;i<nrows;i++)
Array[i]=Array[0]+i*ncolumns;
for(i=0;i<nrows;i++)
{
for(j=0;j<ncolumns;j++)
{
Array[i][j]=1;
printf("%d ",Array[i][j]); //動態數組的成員都可以用正常的數組下標 arrayx[i][j]
}
printf("\n");
}
free(Array);
}
3.同一個單獨的動態分配的一維數組來模擬二維數組:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int nrows,ncolumns;
int *Array;
int i,j;
printf("please input nrows&ncolumns:\n");
scanf("%d%d",&nrows,&ncolumns);
Array=(int *)malloc(nrows*ncolumns*sizeof(int *));
for(i=0;i<nrows;i++)
{
for(j=0;j<ncolumns;j++)
{
Array[i*nrows+j]=1;
printf("%d ",Array[i*nrows+j]); //用 array3[i * ncolumns + j] 訪問第 i, j 個成員
}
printf("\n");
}
free(Array);
}

❼ C語言malloc與new函數創建二維數組

malloc的時候,指定的數組的大小
new 指定的是元素個數。
如果你用malloc的參數去執行new,會比你要求的實際空間大很多,甚至導致申請內存過大而出錯。
其他的 沒什麼區別了。

❽ malloc創建的二維數組怎樣作為自定義函數的參數

和普通的數組名作為函數形參時一樣。malloc函數成功時要將首地址強制為回某種類型的答指針賦給同類型的指針變數,那麼定義函數時接收實參的形參類型就是這個「被強制的某種類型」的指針。比如有int *p=(int *)malloc(...);,自定義函數的形式參數的類型就是int *型。二維數組申請成功後,自定義函數的形式參數的類型應該是int (*)[x],x是列數。

❾ 關於malloc函數創建一個二維數組

需要為每個p[i]分配空間 修改如下

#include<iomanip>
#include<cstdlib>
usingnamespacestd;
intmain()
{
inti,j;
introw,coloum;
int**p;
cout<<"請輸入行和列"<<endl;
cout<<"行:";
cin>>row;
cout<<"列:";
cin>>coloum;
p=(int**)malloc(sizeof(int*)*row);
for(i=0;i<row;i++)
p[i]=(int*)malloc(sizeof(int)*coloum);
for(i=0;i<row;i++)
{
for(j=0;j<coloum;j++)
cin>>p[i][j];
cout<<endl;
}
for(i=0;i<row;i++)
{
for(j=0;j<coloum;j++)
cout<<setw(5)<<p[i][j];
cout<<endl;
}
}

❿ 已經指定長度的數組還需要malloc函數來動態申請空間嗎

動態數組要,但看你的應該是靜態數組,那是自動分配的

閱讀全文

與malloc函數創造的數組相關的資料

熱點內容
武漢疫情投訴 瀏覽:149
知識產權合作開發協議doc 瀏覽:932
廣州加里知識產權代理有限公司 瀏覽:65
企業知識產權部門管理辦法 瀏覽:455
消費315投訴 瀏覽:981
馬鞍山鋼城醫院 瀏覽:793
馮超知識產權 瀏覽:384
介紹小發明英語作文 瀏覽:442
版權使用權協議 瀏覽:1000
2018年基本公共衛生服務考核表 瀏覽:884
馬鞍山候車亭 瀏覽:329
學校矛盾糾紛排查領導小組 瀏覽:709
張江管委會知識產權合作協議 瀏覽:635
關於開展公共衛生服務項目相關項目督導的函 瀏覽:941
閨蜜證書高清 瀏覽:11
轉讓房轉讓合同協議 瀏覽:329
矛盾糾紛排查調處工作協調交賬會議紀要 瀏覽:877
雲南基金從業資格證書查詢 瀏覽:313
新知識的搖籃創造力 瀏覽:187
股轉轉讓協議 瀏覽:676