c語言中怎麼接收一的陣列,在寫程式前不知道這陣列的大小,並且後面有對這陣列的操作

2022-04-05 07:53:47 字數 3419 閱讀 9703

1樓:匿名使用者

接受陣列的方法很多1維陣列a你可以

func(int *a);

func(int a);

func(int a[10]);

這3中方法的是沒區別的,

但是要在函式中獲取一位陣列的長度是不可能的,這是c/c++的乙個無法解決的問題。你可以再定義乙個形參限定一下對陣列操作的大小,

比如func(int *a,int n);

這樣的前提是你要知道你所運算元組必須長度小於n

2樓:匿名使用者

如果陣列的大小需要由輸入的數決定的時候可以用一樓的動態分配的方法

但如果大小根本就不知道 的時候 這是沒有辦法的 這是陣列這個資料結構固有的缺陷--必須有固定的記憶體空間 但是因為其快速索引訪問的能力 所以應用最為廣泛 不過後來c++為了彌補這個缺陷 定義了很多容器 例如vector 它可以理解為陣列 但是並不需要事先知道大小 可以動態地插入元素 有興趣的可以去看一下c++primer這本書

3樓:匿名使用者

你可以這樣:

int *a,n; /*假設陣列是整型的*/scanf("%d",&n); /*假設你要的陣列大小為n個元素*/

a=(int *)malloc(sizeof(int)*n);

這樣a就是有n個元素的陣列的起始位址了,後面就可以使用了。呵呵!

c語言 不知道怎麼寫 是不是用陣列??求解

4樓:匿名使用者

用字串(字元陣列),從第七位開始連續取8個字元,即出生日期。

#include

int main() ;

char year[5] = , month[3] = , day[3] = ;

scanf("%d", &t);

while (t-- > 0)

return 0;}

c語言的陣列前加&有什麼用??

5樓:匿名使用者

&是取位址符,&xx[i][j+1]也就是得到xx[i][j+1]的位址,即它的指標,以便於在該函式中通過引數傳遞位址的方法,利用形參對原陣列的值加以操作。

6樓:—花開千年

加&代表陣列的首位址,也就是陣列入口。

7樓:匿名使用者

表示xx[i][j+1]的儲存位址

c語言:在不知道乙個陣列長度的情況下,怎麼判斷這個陣列的結尾了?

8樓:迂堂派

最後乙個元素的下標是 sizeof(a)-1

9樓:匿名使用者

在程式設計時是不可能不知道乙個陣列的長度的,陣列在定義的時候必須指明其長度,否則編譯不會通過。

所以再想樓主是不是問這樣一種情況啊:定義了乙個固定長度的陣列,但是並沒有存滿資料,然後想判斷這個陣列是不是結尾了。

其實這種情況一般都會用個變數去記錄存放的資料個數,不然還是得從頭到尾遍歷整個陣列。

10樓:教一級

用ansistring字串。或者用 not eof 或 not eoln

11樓:西貝同學

湊點經驗,別理我(路過)

微控制器c語言中如何做乙個函式判斷乙個陣列的大小?

12樓:風若遠去何人留

可以在函式中借用sizeof運算子,來獲取陣列大小。

1 獲取陣列a整體佔用空間可以使用

sizeof(a)

該值為這個陣列佔用的總記憶體值,單位為位元組。

2 獲取陣列元素個數可以用

sizeof(a)/sizeof(a[0])該值為陣列開闢的元素個數。

13樓:匿名使用者

本來就是這樣啊,如果你的是字串,比如「hello,world!」,是以0x00(就是null或者'/0')結尾的,所以能判斷出長度。但是對於非字串的陣列,就必須你自己限定長度而不能用檢查0x00來確定長度了。

否則就是說的那種情況。

14樓:清風

*pt != '/0'

c語言中怎樣定義乙個可變大小的陣列呢?我想根據自己的需要輸入陣列的大小,謝謝啦

15樓:匿名使用者

通過指標和動態分配函式完成。

如: int *p;

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

上述可申請大小為10的整型陣列。

當然也可以用連結串列實現。

16樓:二木澤

這個很簡單,你不要給陣列規定大小就可以了,比如 a 這個陣列的大小就是你輸入的多少來決定的

17樓:蕭豪雲影

常規定義是不可能的 呵呵

不過可以動態記憶體分配用calloc函式建立連續空間段,相當於陣列了

18樓:半季流年

定義copy

動態陣列,例如:

#include

#include

int len;

char *str;

printf("輸入陣列的長度:");

scanf("%d",&len);

str=(char*)malloc(len*sizeof(char));

為str分配分配len個字元大小的空間。

c語言,在函式裡要輸入乙個陣列怎麼辦

19樓:雙槍老椰子

用指標就可以了,如

定義有int a[5];

則這樣定義函式:

int fun(int *p, int size)傳遞引數給函式可以這樣寫:

fun(a, 5);

若是多維陣列,則第一維大小不給出,只指定後面的維數大小,如:

定義有int a[5][2];

則這樣定義函式:

int fun(int p[2], int size)傳遞引數給函式可以這樣寫:

fun(a, 5);

20樓:匿名使用者

你是指作為函式的引數傳遞乙個陣列嗎?

如果是這個意思,那很簡單,用指標就可以了,如定義有int a[5];

則這樣定義函式:

int fun(int *p, int size)傳遞引數給函式可以這樣寫:

fun(a, 5);

若是多維陣列,則第一維大小不給出,只指定後面的維數大小,如:

定義有int a[5][2];

則這樣定義函式:

int fun(int p[2], int size)傳遞引數給函式可以這樣寫:

fun(a, 5);

c語言中,陣列元素的下標下限為,c語言中陣列元素下標的上下限是什麼?

c語言中,陣列元素的下標下限為0。陣列中的各元素的儲存是有先後順序的,它們在記憶體中按照這個先後順序連續存放在一起。陣列元素用整個陣列的名字和它自己在陣列中的順序位置來表示。例如,a 0 表示名字為a的陣列中的第乙個元素,a 1 代表陣列a的第二個元素,以此類推。對於vb的陣列,表示陣列元素時應注意...

在c語言中,定義陣列inta4345678910則a

陣列不能這樣初始化要用逗號,a 0 3 6 這個陣列貌似不對吧 c語言問題 若有說明int a 4 1,2,3,4,5,6,7,8,9 則陣列a第一維 若有說明int a 4 則陣列a第一維是3。定義陣列並賦值時c語言規定下標是這樣的,a n 中的n個元素應該是a 0 a n 1 因此int a 4...

在c語言中用for迴圈輸入陣列a然後要怎麼控制能

int i,a 3 for i 0 i 3 i 就可以了,i就是元素的個數 再迴圈外面設斷點,在裡面用break 控制下標就可以。int i,a 3 for i 0 i 3 i for迴圈裡面會bai 有個判斷表示式,判du斷為假迴圈zhi 就結束啦。dao如 inti for i 0 i 3 i ...