Emm*_*mma -1 c null struct pointers variable-assignment
当我尝试将自构造类型数组指定为NULL时,遇到了不兼容的类型错误.这是我的代码:
#include <stdio.h>
#incldue <stdlib.h>
typedef struct {
int i;
double j;
} MyStruct;
int main() {
MyStruct array[10];
... //doing something
*array = NULL;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我使用以下方法在Ubuntu上编译它:
gcc -o main main.c
Run Code Online (Sandbox Code Playgroud)
编译器显示以下错误:
error: incompatible types when assigning to type 'MyStruct {aka struct <anonymous>}' from type 'void *'
*array = NULL;
^
Run Code Online (Sandbox Code Playgroud)
如何将数组分配给NULL?
我知道数组和指针是不同的,在大多数情况下,数组名称将转换为指针.(正如这个问题所解释的那样:数组名称是指针吗?)但是当我的程序涉及自构造结构时,事情会有所不同.
我尝试了以下两件事:
// 1st
int main() {
int array[10];
... //doing something
*array = NULL; // this gives a warning!!!
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在编译时只有一个警告,而下面的代码有错误.
// 2nd
int main() {
MyStruck array[10];
... //doing something
*array = NULL; // this gives an Error!!!
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我也想知道是什么产生了影响.
如何将数组分配给NULL?
您无法分配数组NULL.数组不是指针.它是一个不可修改的l值,不能作为赋值运算符的操作数.
你在声明中所做的*array = NULL;相当于array[0] = NULL;.array[0]是类型MyStructwhile虽然NULL用于指定指针类型,这使得赋值运算符的操作数不兼容.
如果您尝试将数组的所有元素设置为,0那么您可以这样做
MyStruct array[10] = {0};
Run Code Online (Sandbox Code Playgroud)