一个关于c语言里char *的错误

来源:百度知道 编辑:UC知道 时间:2024/05/25 18:25:41
char *dest= NULL;
dest = (char *)malloc(2);
char *d = dest;
会报错(D:\MY DOCUMENTS\MYPROJECTS\DataStruct\DataStruct.c(22) : error C2143: syntax error : missing ';' before 'type'),但是改成
char *dest = (char *)malloc(2);
char *d = dest;
就没有报错了,这是哪里出了问题呢?

C语言里声明必须写在前面。
char *dest= NULL;
dest = (char *)malloc(2);
char *d = dest;
写成
char *dest= NULL,*d;
dest = (char *)malloc(2);
d = dest;
就没有问题了。

如果是ANSI 1989的C语言标准,规定函数中变量声明前不能有其他语句,因为声明变量是不被看作语句的。
比如
int i = 0;
++i;
int b;
这样就会出错。
应该改成
int i = 0;
int b;
++i;