使用malloc/calloc初始化char*tab[]

使用malloc/calloc初始化char*tab[],c,initialization,malloc,strcpy,calloc,C,Initialization,Malloc,Strcpy,Calloc,我试图初始化一个char*tab[],这会导致分段错误,我做错了什么 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <float.h> int main() { char **cle_par = NULL; cle_par = (char**) calloc (22, sizeof (char *)+1); int y=0; f

我试图初始化一个char*tab[],这会导致分段错误,我做错了什么

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <float.h>
int main()
{
    char **cle_par = NULL;
    cle_par = (char**) calloc (22, sizeof (char *)+1);
    int y=0;
    for (y=0; y<22; y++);
    {
        cle_par[y]=(char *) malloc(45*sizeof(char));
    }
    strcpy(cle_par[0], "this_is_a_test");
}
#包括
#包括
#包括
#包括
int main()
{
字符**cle_par=NULL;
cle_par=(char**)calloc(22,sizeof(char*)+1);
int y=0;
for(y=0;y您的代码有一个“输入错误”,该错误使for循环无效,并使其成为空循环


for(y=0;yTypo:extra分号:
for(y=0;y
for(y=0;yan)另一个例子说明了为什么开口大括号不应该在它自己的行上。在
sizeof(char*)+1
中的
+1
是什么意思?哦,天啊,你说得对……我很惊讶没有警告。谢谢lot@TsakiroglouFotis:哪个数组?我只看到一个指针。