在c中定義數組的正確方法是什麼?下面的結構是不行的, 編譯器提供了一個錯誤「預期的表達」:c - 什麼是定義數組的正確方法?
#include <iostream>
#include <unistd.h>
#define Lookup[9][] = {"00", "01", "02", "03", "04", "05", "06", "07", "08"}
在c中定義數組的正確方法是什麼?下面的結構是不行的, 編譯器提供了一個錯誤「預期的表達」:c - 什麼是定義數組的正確方法?
#include <iostream>
#include <unistd.h>
#define Lookup[9][] = {"00", "01", "02", "03", "04", "05", "06", "07", "08"}
正確的方式來定義和初始化您的數組是
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]);
}
有沒有辦法擺脫零終止? – 2012-02-09 09:53:22
(我需要爲查詢表製作一個非常快的算法,並且零終止符會更加複雜和緩慢) – 2012-02-09 09:55:15
如果用2個字節定義最內層的數組,那麼生成的元素不再是字符串,但有可能。不是字符串,我喜歡用'unsigned char'(或'signed char')而不是普通的'char'來清晰一些:'unsigned char Lookup [] [2] = {「00」,「01」, 「02」,「03」,「04」,「05」,「06」,「07」,「08」};'。 **記住元素不再是字符串**。在'printf'中使用''%s''是錯誤的(正如'
要定義的int
的陣列,例如:
int int_array[10];
要定義和初始化一個數組int
:
int int_array[] = { 1, 2, 3, 4, 5 };
如果初始化數組,則指定元素的數量是可選的。
你在C++的例子,而不是純C ... – gavenkoa 2012-02-09 09:38:36
呃!不要'#define'數據! – pmg 2012-02-09 09:39:11