2012-02-09 99 views
-5

在c中定義數組的正確方法是什麼?下面的結構是不行的, 編譯器提供了一個錯誤「預期的表達」:c - 什麼是定義數組的正確方法?

#include <iostream> 
#include <unistd.h> 

#define Lookup[9][] = {"00", "01", "02", "03", "04", "05", "06", "07", "08"} 
+3

你在C++的例子,而不是純C ... – gavenkoa 2012-02-09 09:38:36

+6

呃!不要'#define'數據! – pmg 2012-02-09 09:39:11

回答

2

正確的方式來定義和初始化您的數組是

char Lookup[][3] = {"00", "01", "02", "03", "04", "05", "06", "07", "08"}; 

陣列中的每個元素Lookup本身另一個3字節的數組。用零終止符計數,這是2字符串長的足夠空間。

數組中的元素的數量是可用的表達sizeof Lookup/sizeof *Lookup,如在

int k; 
for (k = 0; k < sizeof Lookup/sizeof *Lookup; k++) { 
    printf("element at index %d: %s\n", k, Lookup[k]); 
} 
+0

有沒有辦法擺脫零終止? – 2012-02-09 09:53:22

+0

(我需要爲查詢表製作一個非常快的算法,並且零終止符會更加複雜和緩慢) – 2012-02-09 09:55:15

+1

如果用2個字節定義最內層的數組,那麼生成的元素不再是字符串,但有可能。不是字符串,我喜歡用'unsigned char'(或'signed char')而不是普通的'char'來清晰一些:'unsigned char Lookup [] [2] = {「00」,「01」, 「02」,「03」,「04」,「05」,「06」,「07」,「08」};'。 **記住元素不再是字符串**。在'printf'中使用''%s''是錯誤的(正如''中使用許多函數一樣)。 – pmg 2012-02-09 09:58:57

2

要定義的int的陣列,例如:

int int_array[10]; 

要定義和初始化一個數組int

int int_array[] = { 1, 2, 3, 4, 5 }; 

如果初始化數組,則指定元素的數量是可選的。

相關問題