0和1有什么区别?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
int namelen;
char namestr[1];
}name;
name* makename(char *newname)
{
name *ret =
(name*)malloc(sizeof(name)-1+strlen(newname)+1);
memset(ret,0,sizeof(name)-1+strlen(newname)+1);
if(ret!=NULL)
{
ret->namelen = strlen(newname);
strcpy(ret->namestr,newname);
}
return ret;
}
int main()
{
name* test;
char str[]= "abcd";
test = makename(str);
printf("%s\n",test->namestr);
}
这里的
typedef struct
{
int namelen;
char namestr[1];
}name;
改为
typedef struct
{
int namelen;
char namestr[0];
}name;
有没有区别?是否一定要使用1
当然char namestr[];这样是肯定可以的.