㈠ c語言如何定義未知個數的數組
用malloc函數。。。。
比如你要申請int型的未知個數數組。可以以下程序
#include<stdio.h>
#include<stdlib.h>
main()
{
int *p;
int n;
printf("請輸入錄入個數N:\n");
scanf("%d",&n);
p = (int *)malloc(n*sizeof(int));
//然後把*p當作數組指針用就可以了。。~~~~
}
㈡ C語言 數組未知個數 怎麼聲明
1、首先,我們編寫頭文件以及main函數主框架。
㈢ 怎樣用c語言生成一個數組都是未知數
@現在我遇到這樣一個問題,一個6*6的矩陣,裡面每個數都是未知數,都需要通過另外的公式計算得到,那這個數組該怎麼定義呢?是不是在定義這個數組之前都要把這些未知數都通過公式和scanf定義了?
回答:先根據36個數的類型(如int),定義int
a[6][6]={0},這個語句的意思是:36個元素都設為0.在後來的計算中,將開始的元素替換掉就可以了,如
a[5][5]
=
100;(將最後一個元素設為100)
㈣ c++ 如何定義未知元素個數的數組
如果數組的元素個數不知道的話,只能通過動態內存分配了,靜態內存分配是沒有辦法實現的,因為靜態內存分配在定義數組的時候必須指定數組的大小為一個常量或者常數,例如:
int array[10];
或者
const int Size=10;
int array[Size];
當然你可以採用常量的方法,但是就是每次必須打開源代碼來調整這個數組的大小,很不方便,所以要採用動態內存分配的方法;
在c語言中:
int arraysize;//元素個數
printf("請輸入數組的大小:");
scanf("%d",&arraysize);
int *array;//用指針指向一個數組
array=(int *)malloc(arraysize *sizeof(int));//動態內存分配
....
free(array);//最後要釋放這個空間,用完了,當然要還給系統
malloc()函數在內存堆區中尋找未被使用的內存,找夠所需的位元組數後返回該內存的起始地址。
所需位元組數通過參數知道,在本例中arraysize元素個數,乘以每一個元素的位元組數,等於總的位元組數;
每一個元素的位元組數通過測位元組sizeof()運算符得到,元素的數據類型為int,所以測int類型需要多少位元組。
malloc()函數並不知道用這些內存干什麼,所以返回一個沒有類型的指針,但對於整型指針array來說,malloc()函數得返回值必須顯式轉換成整型指針才能被接受。所以前面加了一個(int *)。
在c++中就可以不用malloc()函數和free()函數了。
int arraysize;//元素個數
cout<<"請輸入數組的大小:";
cin>>arraysize;
int *array;//用指針指向一個數組
array=new int[arraysize]; //動態內存分配
....
delete []array;//最後要釋放這個空間,是一組空間所以加了[]。
array=new int[arraysize];
new表示申請空間;什麼類型?int;多大?arraysize
返回該內存的起始地址存到array指針中
㈤ C語音如果數組個數不確定應該怎樣定義數組
第一種方法:最大值法。
申請的數組可能需要30個左右,於是申請數組大小固定為40;
第二種方法:動態分配,即指針。
需要大小為n的整型數組,int *pn = (int*)malloc(n*sizeof(int));
㈥ 剛學c語言,怎麼定義一個未知元素個數的數組啊在線等~謝謝了
不用作任何改動,就定義a[]就可以了,C語言自動按逗號分隔,並提供相應的緩沖區.
㈦ 剛學c語言,怎麼定義一個未知元素個數的數組
不能!
可以根據實際情況考慮,比如說如果不超過100個 ,那就定義105的數組
㈧ 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
*/
㈨ C語言中如何將未知個數的數存放在一個數組中
在C語言中數組的定義必須指明維數,即使沒有指明維數,也必須進行初始化,編譯器通過初始化列表中的元素個數來確定數組的維數,比如下面的代碼:
int a[] = {1,2,3};
雖然沒有指明數組的維數,但是編譯知道數組a的維數是3(只有三個元素)。
要實現未知個數的元素存儲於數組中,可以使用malloc()和free()來進行動態內存分配 。下面是一個使用動態內存的示例:
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
intmain()
{
intsize;
printf("輸入建立元素的個數:");
scanf("%d",&size);
int*p=(int*)malloc(sizeof(int)*size);
if(p==0){
printf("不能分配內存 ");
return0;
}
//初始化內存
memset(p,0x00,sizeof(int)*size);
//釋放內存
free(p);
return0;
}
㈩ C 如何定義一個未知長度的數組
定義一個未知長度的數組的方法:
一是用VLA可變長數組,例如:
int i = 10, j = 20;
double a[i][j]; //定義VLA
VLA要c99才開始支持,需要使用c99編譯器,例如gcc
二是使用動態數組,例如:
int m = 10, n = 20;
.........
double **p = ( double** )malloc( 10 * sizeof( double* ) );
for( i = 0; i < 20; ++i )
p[i] = ( double* )malloc( 20 * sizeof( double ) );
..........
p[5][6] = 20.68;