这取决于你想要完成什么。
如果要声明和分配两个,20个字符的连续字符串,固定宽度,有两种方法,
#define STRMAX (20)
typedef char string[STRMAX+1]; //need room for null terminator
string dizionario[2] = { "ergbeciao", "ciaozio" }; //array of char[20+1]
或者您可以分配,然后使用 strcpy 分配值,
string dizionario[2] = { 0 }; //empty
strcpy( dizionario[0], "ergbeciao" );
strcpy( dizionario[1], "ciaozio" );
但是,你可能想要一个指向字符串的指针数组,所以定义不同,
#define STRMAX (20)
typedef char string[STRMAX+1]; //need room for null terminator
string* dizionario[2] = { 0 }; //array of null pointers
然后将文字字符串(指针)赋值给指针数组,
dizionario[0] = "ergbeciao";
dizionario[1] = "ciaozio";
或者使用 malloc 提供不同的内存,
dizionario[0] = malloc("ergbeciao");
dizionario[1] = malloc("ciaozio");
更好,为字符串提供构造函数和析构函数,
string*
stringNew(char* sp)
{
char* np = malloc(STRMAX+1);
if(!np) return np; //malloc failed
if(sp) strcpy(np,sp); //null source pointer
return np;
}
void
stringDel(string* sp)
{
if(!sp) return; //avoid double free
free(sp);
return(sp);
}
dizionario[0] = stringNew("ergbeciao");
dizionario[1] = stringNew("ciaozio");