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。陣列的賦值通常是使用花括號來表...