C語言中怎樣定義動態一維陣列,c語言中定義一個動態一維陣列的函式,然後在主函式中使用

時間 2021-09-07 13:27:16

1樓:天雲一號

在c語言中,陣列的定義都是固定長度的,長度不允許變化。

可以通過連結串列的方式來達到定義」動態陣列「的等價功能,舉例如下:

連結串列節點定義如下:

struct node

;存放資料時可以對節點中的node賦值即可,如:

struct node *p;  // 定義一個連結串列節點p->data = 3;  // 存放第一個資料p = p->next;

p->data = 5;  // 存放第二個資料這樣,需要存放多少個資料就可以動態定義了,相當於實現了動態陣列的功能。

2樓:匿名使用者

void * malloc(位元組數)

你用的時候把void 型的指標強制轉換為你需要的型別的指標就行了

int *array =(int*)malloc(位元組數);

3樓:

int n,*pi;

n=5;

pi=(int *)malloc(sizeof(int)*n)再需重新分配空間時使用

void *realloc(void *block, size_t size)

最後不要忘了

free(pi);

4樓:匿名使用者

int *array =(int*)malloc(sizeof(int)*n); // n 為你要定義陣列的大小

5樓:

#include

#include

using namespace std;

int main()

c語言中定義一個動態一維陣列的函式,然後在主函式中使用

6樓:有錢買不起房子

如果要獲取記憶體地址,你上面那種函式獲取方法是錯誤的.函式中int *a僅僅是主函式變數ff的一個副本,ff當初沒有具體指明地址,傳遞給a也是不確定地址,a分配完畢,只是修改a自身指向,並不修改ff指向.所以用下面方法進行修改,採用返回地址方法

#include //包含標頭檔案

#include

int *array1(int x)//使用返回指標能正確分配記憶體地址

void main()

7樓:

像你這種需要通過傳參並對實參分配空間,需要傳指標的地址。

#include "stdio.h"

#include "stdlib.h"

void array1(int x, int **a)/*形參也是指向指標的指標*/

int main()

8樓:

void array1(int x,int **a) //要修改原指標就要用二級指標

int main(int argc, char *ar**)

9樓:匿名使用者

void array1(int x,int *a)

int main()

c語言中如何定義陣列

10樓:文望刃

c語言中,同變數一樣;陣列也必須先定義後使用。

一維陣列的定義形式:

型別識別符號  陣列名[常量表示式];例如int a[10];   其中a為地址常量。

如變數的定義一樣,int a ;double a;float a等;陣列的定義只是把後面的變數名改為陣列名而已。

int a[10]就是定義了一個陣列名為a的陣列;此陣列有10個元素。其中各元素從a[0]到a[9];並沒有a[10]元素。下面列舉一個。

常量表示式可以包括字面常量和符號常量;但不能包含變數。例如對下面定義是錯誤的

int n=5

int a[n]

可以修改為

#define n 5

int a[n]

其中對二維及多位陣列定義可以類推

int  a[x][y][z][...]其中 x,y,z為數字。

11樓:匿名使用者

陣列定義的三種方式

1、第一種

int a = newint[5];

a[0] = 10;

2、第二種

int c = newint;

3、第三種

int i =;

4、錯誤的寫法

int i1 = [1,2,3,4];

system.out.println(arrays.tostring(c));

5、總之,具體的元素不能被【】包裹。【】包裹的應該是陣列的數量。

擴充套件資料陣列的注意事項:

1、 陣列中每個元素的資料型別必須相同,對於inta[4];,每個元素都必須為 int。

2、 陣列長度 length 最好是整數或者常量表示式,3、 訪問陣列元素時,下標的取值範圍為 0 ≤ index < length,

參考資料

12樓:星願

定義整形陣列

int a[5];

int a = ;

int a[3][4];/*建立一個有3行4列的二維陣列*/

printf("please enter a[i]");

for(i=0;i<5;i++)

scanf("%d",&a[i]);

可以完成a[5]的陣列輸入

13樓:育知同創教育

主函式內定義的陣列在堆疊段中分配記憶體。

全域性變數陣列在資料段中分配記憶體。

一般資料段比堆疊段大很多,

所以堆疊段分配不了的記憶體,資料段可以分配

(1)在堆疊段中分配記憶體,由於太大無法分配,所以錯誤。

(2)在資料段中分配記憶體,資料段可以分配,無錯誤。

(3)陣列比(1)需要的記憶體少,在堆疊段大小範圍內,可以分配,無錯誤(4)同(3)

14樓:匿名使用者

int a[3];/*建立一個有3個元素的一維陣列*/

int a[3][4];/*建立一個有3行4列的二維陣列*/

int a[4][5][6];/*建立一個有4層5行6列的三維陣列*/

15樓:匿名使用者

定義一維陣列:int a[n] 如:int a[3] ,表示這個陣列可以存三個數: 1 4 2

定義二維陣列: int a[m][n] 如 int a[2][3],標售這個陣列可以存2行三列 共6個數:

如:2 4 4

5 6 7

16樓:風了瘋了鋒了

如果是定義數

組,一維陣列就是int a[10];

型別說明符 陣列名[常量表示式];

二維陣列 int a[3][4];

型別說明符 陣列名[常量表示式] [常量表示式];

但我覺得這個比較好理解,難一點的就是關於陣列的輸入要用到for的迴圈語句

printf("please enter a[i]");

for(i=0;i<5;i++)

scanf("%d",&a[i]);

可以完成a[5]的陣列輸入

17樓:匿名使用者

例如定義整形陣列

int a[5];

int a = ;

18樓:

詳細瞭解c語言程式設計知識第七節-c語言陣列定義,標識與賦值

c語言中怎麼定義動態的陣列長度?

19樓:匿名使用者

這個簡單..

你通過malloc分配空間的方式來定義陣列哇..

看看這個例程..

int main(void)

{int *number, n, m, i;

printf("the total numbers is:");

scanf("%d", &n);

printf("back m:");

scanf("%d", &m);

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

printf("input %d integers:", n);

for (i=0; i樣

c語言中一維陣列正確的定義

20樓:旅者一生

符號常量是用一個識別符號來表示一個常量,一維陣列的定義方法為:型別說明符+陣列名+[常量表示式];

型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。方括號中的常量表示式表示陣列元素的個數或者長度,可以是常量或符號常量,不能為變數。

例如:1、int x[8]; 表示定義一個整型陣列x,陣列長度為8.

2、float a[8],b[10];表示定義一個實型陣列b,陣列長度為8,一個實型陣列c,陣列長度為10

3、 ch[15];  表示定義一個字元陣列ch,陣列長度為15。

擴充套件資料

在程式中可以使用下標變數,即說明這些變數的整體為陣列,陣列中的每個變數的資料型別是相同的。當陣列中每個元素都只帶有一個下標時,稱這樣的陣列為一維陣列。

一維陣列是由數字組成的以單純的排序結構排列的結構單一的陣列。一維陣列是計算機程式中最基本的陣列。二維及多維陣列可以看作是一維陣列的多次疊加產生的。

陣列是計算機程式設計中的重要概念,運用陣列可以方便地處理大規模的資料。

21樓:

定義如下:

符號常量是用一個識別符號來表示一個常量,一維陣列的定義方法為:型別說明符+陣列名+[常量表示式];型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。

方括號中的常量表示式表示陣列元素的個數或者長度,可以是常量或符號常量,不能為變數。

22樓:

這道題正確的答案是:c選項。

a. int  a (5);

錯誤,因為不能用(),()一般函式,以及(*int)強制轉換型別。

b. int  n=5,  a[ n ];

錯誤,因為不能是變數。

c.int a[sz];

正確,sz為符號常量,如被定義是:#define sz  10,這就是int a[sz];

符號常量的解釋:

1、符號常量是:在c語言中,可以用一個識別符號來表示一個常量,稱之為符號常量。

2、符號常量在使用之前必須先#define定義(如**1),一般使用const來指明(如**2)。

**例項1:#define max_size 256;

**例項2:const int max_size =256;

3、#define 也是一條預處理命令(預處理命令都以"#"開頭),稱為巨集定義命令,通過前處理器來替換符號常量,其功能是把該識別符號定義為其後的常量值。

一經定義,以後在程式中所有出現該識別符號的地方均代之以該常量值。習慣上符號常量的識別符號用大寫字母,變數識別符號用小寫字母,以示區別。

4、符號常量雖然有名字,但它不是變數。它的值在其作用域內是不能改變的,也不能被賦值。

5、使用符號常量的好處是:1、含義清楚。2、在需要改變一個常量時能做到「一改全改」。

23樓:匿名使用者

在c語言中使用陣列必須先進行定義。一維陣列的定義方式為:

型別說明符 陣列名 [常量表示式];

其中,型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。方括號中的常量表示式表示資料元素的個數,也稱為陣列的長度。例如:

1、int a[10];  /* 說明整型陣列a,有10個元素 */2、float b[10], c[20];  /* 說明實型陣列b,有10個元素,實型陣列c,有20個元素 */

3、 ch[20];  /* 說明字元陣列ch,有20個元素 */

24樓:匿名使用者

c語言中定義一維陣列如下:

資料型別  陣列名[陣列長度];   // 不進行初始化的陣列

資料型別  陣列名[陣列長度] = ;   // 進行初始化的陣列

舉例如下:

// 定義一個int型的未進行初始化陣列data1

int data1[5];

// 定義一個int型的數

組data2,並對陣列中各元素進行初始化

int data2[5] = ;

擴充套件資料:

定義陣列的定義格式如下:

型別識別符號 陣列名[常量表示式]

說明:①陣列名的命名規則與變數名的命名規則一致

②常量表示式表示陣列元素的個數。可以是常量或符號常量,不能為變數。

例如:int a[10];                     //陣列a的定義是合法的

int a[n];

引用通過給出的陣列名稱和這個元素在陣列中的位置編號(即下標),程式可以引用陣列中的任意一個元素。

在c++中,一維陣列的引用格式為:陣列名[下標]

例如: int a[10];

其中,a是一維陣列的陣列名,該陣列有10個元素,依次表示為a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]。需要注意的是,a[10]不屬於這一個陣列的空間範圍中。當在說明部分定義了一個陣列變數後,編譯程式會在記憶體空間中開闢一串連續的儲存單元。

對於陣列而言,程式的執行部分使用的是陣列變數而不是陣列型別。需要注意的是:在引用時,下標可以是整型變數或整型表示式。

如果使用表示式,會先計算表示式以確定下標。程式只能逐個應用陣列中的元素而不能一次引用整個陣列。如:

int a[100],b[100]; a=b;

C語言中一維陣列正確的定義

文庫精選 內容來自使用者 落崖一號 在程式設計中,為了處理方便,把具有相同型別的若干變數按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為陣列。在c語言中,陣列屬於構造資料型別。一個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為...

C語言中關於二維陣列的問題,c語言關於定義二維陣列的問題

巢琨瑜 float a 5 是定義了一個指向陣列的指標,如果要把它當成二維陣列的話,相當於列數為5,行數可以動態分配。如 float a 5 int n 2 定義行數為2 a new float n 5 int sum 0 for int i 0 i 對於你定義的這個陣列,它表示有5個float 型...

c語言陣列賦值問題,c語言中如何給陣列定義並賦初值?

靈凍冰晶霜月 我不清楚你想問什麼,不過第二種寫法是對的。char chars 11 是定義了一個初始值為空總數為11的字元陣列。char s c language 定義一個總數為11的字元陣列,但是有初值。注意是11個不是10個,用這種方定義的字元陣列末尾會加一個 0。陣列的賦值通常是使用花括號來表...