c语言文本按行分配数组元素,【转】C语言中动态分配数组
int main()
{
int i = 0;
int *a;
int N;
printf("Input array length: ");
scanf("%d", &N);
printf("\n");
a = (int *) malloc(N * sizeof(int));//int 可以用*a來代替
for(i = 0;?i < N; i++)
{
a[i]?= i + 1;
printf("%-5d", a[i]);
if ((i + 1) % 10 == 0)
printf("\n");
}
free(a);
printf("\n");
return 0;
}
這樣就完成了數組a[N]的動態分配,那么多維怎么分配呢?一個道理啊!!!!!!!!!!!!
二維
int main()
{
int nrows,ncolumns;
scanf("%d,%d",nrows,ncolumns);
區別的地方
//為數組分配行數????? 注意指針多了個*
int **array = malloc(nrows * sizeof(*array));//注意分配的是整形指針的數量 每行元素是個整形指針
/*這里可以寫成
int **array;
array=(int**)malloc(nrows*sizeof(int*));//這里int可以寫成**array
*/
//對每行分配數組個數(就是二維數組的列數)
for(i = 0; i < nrows; i++)
{
/*
這里int*可以寫成*array 其實array是一個指向指針的指針變量,所以要將分配的內存轉化為指針類型,在一臺計算機中所有的指針變量分配的內存大小相同都是計算機的位數(就是地址線的條數,指針變量存放的是地址與地址線對應可以尋址)
*/
array[i] = (int*)malloc(ncolumns * sizeof(int));
for(l=0;l
{
array[i][l]=...
}
}
//付初值以及處理過程
free(array);
return 0;
}
多維一個道理 每增加一維 輸入數據就要多一個? 定義指針的時候就多一個* ?且分配的時候也要多個*?還要多個for循環
三維
int main()
{
int rows,colnums,num;
scanf("%d %d %d",rows,colnums,num);
int ***p=malloc(rows*sizeof(*p));
/*
這里可以寫成
int ***p;
p=(int***)malloc(rows*sizeof(int**));//int**可以寫成*p
*/
for(int i=0;i
{
p[i]=(int**)malloc(colnums*sizeof(int*));//**p
for(int j=0;j
{
p[i][j]=(int*)malloc(num*sizeof(int));//這里可以寫成*p
for(r=0;r
{
p[i][j][r]=...
}
}
}
free(p);
return 0;
}
以上擴展內容純熟個人總結(水平不高) 如果有哪里不對希望高手幫忙指出,謝謝.(暫時代碼里面可能還有很多問題,我會慢慢修改)
總結
以上是生活随笔為你收集整理的c语言文本按行分配数组元素,【转】C语言中动态分配数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 粤港澳大湾区数字定投是什么
- 下一篇: 卡号是什么意思