2012-02-09 102 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 }; 

如果初始化数组,则指定元素的数量是可选的。

相关问题