當前位置:首頁 » 編程語言 » c語言動態數組初始化

c語言動態數組初始化

發布時間: 2023-08-09 17:31:59

c語言,結構體數組怎麼初始化

對於數組元素很多的初始化可以使用初始化列表方法。在c語言中用於進行初始化的程序結構則稱為初始化器或初始化列表。

1、初始化器

初始化器是聲明器的可選部分,它由一個'='以及其後的一個表達式(或含有多個以','隔開的帶圓括弧表達式的單一列表)所組成。後面這一列表有時也被稱為「初始化(器)列表」(initializer list)或」初始化列表」(initialization list)。

例:

public class Curry

{public string MainIngredient { get; set; }

public string Style { get; set; }

public int Spiciness { get; set; }}

2、初始化列表

一個類/結構的構造函數可以在定義中於構造函數體前包含一個初始化列表,用以給類/結構的元素賦初值。

例:

class foo

{public:

foo(string s, int i):name(s), id(i){} ; // 初始化列表

private:

string name ;int id ;};

(1)c語言動態數組初始化擴展閱讀

在程序里,數據初始化也可能在沒有由明確的語法來實現的情況下進行。例如說,如果一個靜態變數在沒有初始化(即未指定初值)的情況下被聲明,則:對於原生數據類型:以對應類型的零值進行初始化;對於類中的靜態對象:由其默認的構造函數來進行初始化。

每一個初始化部分裡面的代碼在程序運行後,或庫的begin-end塊運行之前。delphi使用對單元相關樹的深度優先遍歷來運行初始化部分。換句話說,就只在一個單元的初始化代碼運行前,delphi就運行了特他使用的每一個單元的初始化部分。每一個單元僅初始化一次 。

❷ 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語言如何動態創建二維數組

既然是動態創建,那麼,所創建的二維數組的行、列數應該具有「普適」性,即,應由「用戶」確定二維數組的規模。這是有難度的。因為,二維數組要牽扯行指針,且需要固定每行的列元素個數,用這種思路就沒有辦法達到「普適」。
為此,必須清醒地知道,所謂二維數組,其元素在內存中依然是以一維的方式存放的。說實話,二維數組本質上是不存在的。
既然如此,那麼,「構造」一個所謂的二維數組,只要能提供足夠實用的函數(工具)操作這個二維數組就可以了。
綜上,接受由用戶決定的二維數組行、列值,申請一個一維數組的空間,按照二維數組方式進行定位和操作就可以了。
為簡便起見,我用如下定義,你可以更改裡面的類型,以適應自己的需要:
typedef int USER_TYPE;

// 定義一個控制二維數組(矩陣)的「控制頭」,由三個成員組成

typedef struct MATRIX
{
USER_TYPE *data; // 真正用來存儲二維數組元素的空間

int Row; // 二維數組行數

int Col; // 二維數組列數

}MATRIX;

MATRIX *initMatrix(int row, int col); // 初始化二維數組

USER_TYPE getElementAt(MATRIX matrix, int i, int j); // 取得指定下標的元素

void setElementAt(MATRIX matrix, int i, int j, USER_TYPE val); // 給指定下標的元素賦值
void destroyMatrix(MATRIX *matrix); // 銷毀二維數組

void destroyMatrix(MATRIX *matrix)
{
free(matrix->data);
free(matrix);

}

void setElementAt(MATRIX matrix, int i, int j, USER_TYPE val)
{
matrix.data[i*matrix + j] = val;

}

USER_TYPE getElementAt(MATRIX matrix, int i, int j)
{
return matrix.data[i*matrix.Col + j];

}

MATRIX *initMatrix(int row, int col)
{
MATRIX *mp;

mp = (MATRIX *)malloc(sizeof(MATRX));
mp->data = (USER_TYPE *)malloc(sizeof(USER_TYPE) * row * col);
mp->Row = row;
mp->Col = col;

return mp;

}
把上面的函數當成工具,完成二維數組初始化、賦值、取值等一系列操作,如果需要比較,還需要編寫比較的函數。

❹ C語言數組的初始化表示方法

不是inta[] 而是例如int a[10]這種。括弧內一定要有個常量數字。

我們可以這樣定義

#define N 5

int a[N]

這表明了數組名為a;數組有5個元素;分別是a[0]到a[4];

對於數組來說;數組是變數的集合,因此數組也具有與變數相同的數據類型和儲存類型。數組的類型就是它所有的變數的類型。在定義數組時,應在數組名前對數組的類型加以確定。如上面的int a[10];則表明了數組內元素均為整形。

所有當表示浮點型可以定義為例如float a[10]。 舉例如下:

(4)c語言動態數組初始化擴展閱讀

數組名是由用戶命名的C語言標識符,要遵循標識符命名規則。數組名表示數組存儲區域的首地址。數組的首地址也就是第一個元素的地址。數組名是一個地址常量,不能對它賦值。

數組名後是由方括弧括起來的常量表達式,不能使用其他括弧

❺ C語言數組動態賦值

輸入整型數組,這樣循環是可以的。
scanf輸入格式沒有指定,默認是空格分割。
也就是說,你要麼輸入一個數就回車,再輸第二個。
要麼連續輸入多個數,用空格分割。
看看,你輸入格式對不對。

熱點內容
資料庫測試數據 發布:2025-02-06 11:31:05 瀏覽:820
球頭軸編程 發布:2025-02-06 11:29:36 瀏覽:279
為什麼安卓系統不能收縮許可權 發布:2025-02-06 11:27:58 瀏覽:730
演算法4視頻 發布:2025-02-06 11:19:20 瀏覽:933
51內置音效卡需要什麼主機配置 發布:2025-02-06 11:18:33 瀏覽:838
防針刺傷的物品配置有哪些 發布:2025-02-06 11:11:25 瀏覽:670
游戲數據反編譯 發布:2025-02-06 11:05:30 瀏覽:400
逍遙安卓在哪裡下載的視頻 發布:2025-02-06 10:50:42 瀏覽:877
上編程序 發布:2025-02-06 10:49:08 瀏覽:796
會議源碼 發布:2025-02-06 10:47:09 瀏覽:93