在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