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

2022-11-02 14:28:38 字數 3419 閱讀 1806

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語言中關於字元陣列的長度問題

r 這是個字元陣列,系統只為它分配了3個位元組的空間,但是strlen只有遇到 0 才會返回 於是它會向後繼續進行,直到有 0 這其實是越界 或許沒有,可能訪問的是q 10 了.你可以這樣 printf s n r 來檢視下列印的資訊。在我的上面 tc 是 3 3 3 9 哎。strlen 是在st...

c語言中的指標陣列和陣列指標的區別

指標陣列 陣列裡的每乙個元素都是指標如 p 10 裡面的 p 0 到 p 9 都是指標 可參考 http baike.陣列指標 指向乙個陣列的指標,如 arr 10 是乙個陣列,讓乙個指標指向這個陣列 p arr 訪問時通過 p n 或 p n 訪問元素值,n為元素索引值 可參考 http baik...

C語言中陣列名就是陣列的首位址,怎麼解釋?哥們菜鳥

哥們應該寫錯了吧,陣列名應該是a,以你的例子為例。int為型別說明符,a為說組名,3 20 是常量或者常量表示式 c語言預設陣列名a為陣列首位址 希望對你有幫助 樓主,你定義了乙個二維陣列,但你弄錯了一點,陣列名是a而不是你說的a 3 20 對於二維陣列a是指向行的而不是指向列。陣列名a是二維陣列第...