我在我的程序中做这个任务,我得到了一个标题警告。这是代码片段:
table_name[index] = NULL;
我无法理解这样的声明可能存在什么问题。
NULL不是一个有效的整数,它被分配给一个大概由 s 组成的数组的条目int
,所以编译器在抱怨。
NULL 用作指示“无”的默认指针值。如果您有一个指针变量并将 NULL 分配给它,您会说该指针变量指向“无”。
由于这种类型不匹配,特定消息警告您正在尝试将一种类型(实际上是指针值)分配给另一种(int
)而不尝试强制转换它(这就是我们有时将一种类型转换为另一种以避免类型不匹配)。
如果你有一个指针数组,那么这个 NULL 赋值就可以了。
问题是这table_name[index]
是一个整数值,而不是一个指针。 NULL
旨在表示指针。
如果table_name
声明为int*
,你可以table_name = NULL;
毫无问题地做,但是当 在索引处设置一个值时,编译器会期望你使用与数组相同的类型。
当我尝试将指针值分配给变量(总是相同的数据类型)时,编译器会做出相同的反应..
例子:
#include <stdio.h>
#include <stdlib.h>
int main(){
int X,Y;
int *P_1;
float Z;
float *P_2;
X=5;
Z=3.5;
P_1=&X;
printf("\n X = %d, Z = %.2f\n",X,Z);
printf(" &X = %d\n",&X);
printf(" *P_1 = %d\n",*P_1);
printf(" P_1 = %d\n",P_1);
Y=X;
printf(" Y = %d\n",Y);
X=10;
Y=P_1;
fflush(stdin);
getchar();
return 0;
}