c語言如何動態定義數組
㈠ c語言中怎麼定義動態的數組長度
動態數組長度,對於部分新的編譯器,支持C99的,可以直接用變數定義數組
比如
func(intn)
{
inta[n];
....
}
不過 有些編譯器不支持 會報錯
就只能使用動態數組,也就是malloc
如
func(intn)
{
int*a;
a=(int*)malloc(sizeof(int)*n);
....
free(a);
}
㈡ C語言如何定義一個動態數組
malloc一個空間再使用數組
㈢ C語言中怎樣定義動態一維數組
void * malloc(位元組數)
你用的時候把void 型的指針強制轉換為你需要的類型的指針就行了
int *array =(int*)malloc(位元組數);
㈣ C語言中如何不用2級指針實現定義一個動態二維數組,該數組的行和列都要動態定義
兩種方法:
1.轉化為一維數組申請
2.先申請全部行首指針,再按行逐行申請
1.
a=(int *)malloc(sizeof(int),(unsigned)m*n);
使用的時候就和一般的二維數組一樣。
舉個例子給你:
#include "stdlib.h"
#include "stdio.h"
#include <malloc.h>
int main()
{
int i,j;
int n;//這個就是需要指定的行數
int (*p)[10];
scanf("%d",&n);//取得行數
//動態生成二維數組,指定列數為10,如果想改,自己該裡面
的參數,如果想定義n行2列就為: p=(int (*)[2])malloc(n*2*sizeof(int));
p=(int (*)[10])malloc(n*10*sizeof(int)); //動態申請n行10列的二維數組
for(i=0;i<n;i++)
for(j=0;j<10;j++)
p[i][j]=i*j;
for(i=0;i<n;i++)
{
for(j=0;j<10;j++)
printf("%d,",p[i][j]);
printf("\n");
}
free(p);
return 0;
}
2.
這個也給你舉個例子吧:
#include <stdio.h>
#include <malloc.h>
main()
{
int i = 0;
int j = 0;
int line = 0;
int row = 0;
int **p = NULL;
printf("input the line of the array:\n");
scanf("%d", &line);
printf("input the row of the array:\n");
scanf("%d", &row);
p = (int **)malloc(sizeof(int *) * line);
if (NULL == p)
{
return;
}
for (i = 0; i < line; i++)
{
*(p + i) = (int *)malloc(sizeof(int) * row);
if (NULL == *(p + i))
{
return;
}
}
/*input data*/
for (i = 0; i < line; i++)
{
for(j = 0; j < row; j++)
{
p[i][j] = i + 1;
}
}
/*output data*/
for (i = 0; i < line; i++)
{
for(j = 0; j < row; j++)
{
printf("%d", p[i][j]);
}
}
/*free every line point*/
for (i = 0; i < line; i++)
{
free(*(p + i));
p[i] = NULL;
}
free(p);
p = NULL;
}
第一種方法數組創建和釋放都比較簡單
㈤ 如何定義一個動態的數組
利用這一特性定義一個指針數組。
int **p= new int*[size];//定義指針數組
int *p[5];// 假若知道二維數組的行數為5
然後對指針數組中的每一個指針分配一個一維數組空間,這樣便動態定義了二維數組
事實上,我認為指針數組的主要用途,就在於動態定義多維數組
for(int i=0;i<size;i++)
{
p[i]=new int[Column];
}
運行完畢後,一個二維數組便被動態的成功建立。
㈥ c語言怎樣採用動態方法創建數組
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int *p;
int num;//數組的大小
int i = 0;
printf("數組的大小:");
scanf("%d",&num);
p = malloc(sizeof(int)*num);
for(;i<num;i++)
p[i]=i;
i = 0;
for(;i<num;i++)
printf("%d ",p[i]);
printf("
");
return 0 ;
}

㈦ C語言如何定義動態數組
intmain(void)
{
int*number,n,m,i;
printf("thetotalnumbersis:");
scanf("%d",&n);
printf("backm:");
scanf("%d",&m);
number=(int*)malloc(n*sizeof(int));
printf("input%dintegers:",n);
for(i=0;i<n;i++)
{
scanf("%d",&number[i]);
}

(7)c語言如何動態定義數組擴展閱讀
動態數組,是相對於靜態數組而言。靜態數組的長度是預先定義好的,在整個程序中,一旦給定大小後就無法改變。而動態數組則不然,它可以隨程序需要而重新指定大小。
動態數組的內存空間是從堆(heap)上分配(即動態分配)的。是通過執行代碼而為其分配存儲空間。當程序執行到這些語句時,才為其分配。程序員自己負責釋放內存。使用動態數組的優點是可以根據用戶需要,有效利用存儲空間。
㈧ c語言中如何定義動態指針數組
1、使用malloc函數,先分配第一維的大小,然後再循環分配每一維的大小。
2、常式,分配3行4列二維數組:
#include<stdio.h>
#include<malloc.h>
intmain()
{
int**a;
inti,j;
a=(int**)malloc(sizeof(int*)*3);//為二維數組分配3行
for(i=0;i<3;++i){//為每列分配4個大小空間
a[i]=(int*)malloc(sizeof(int)*4);
}
//初始化
for(i=0;i<3;++i){
for(j=0;j<4;++j){
a[i][j]=i+j;
}
}
//輸出測試
for(i=0;i<3;++i){
for(j=0;j<4;++j){
printf("%d",a[i][j]);
}
printf(" ");
}
//釋放動態開辟的空間
for(i=0;i<3;++i){
free(a[i]);
}
free(a);
return0;
}
/*
輸出:
0123
1234
2345
*/
