2

我在我的程序中做这个任务,我得到了一个标题警告。这是代码片段:

table_name[index] = NULL;

我无法理解这样的声明可能存在什么问题。

4

3 回答 3

6

NULL不是一个有效的整数,它被分配给一个大概由 s 组成的数组的条目int,所以编译器在抱怨。

NULL 用作指示“无”的默认指针值。如果您有一个指针变量并将 NULL 分配给它,您会说该指针变量指向“无”。

由于这种类型不匹配,特定消息警告您正在尝试将一种类型(实际上是指针值)分配给另一种(int)而不尝试强制转换它(这就是我们有时将一种类型转换为另一种以避免类型不匹配)。

如果你有一个指针数组,那么这个 NULL 赋值就可以了。

于 2012-06-20T01:06:23.733 回答
1

问题是这table_name[index]是一个整数值,而不是一个指针。 NULL旨在表示指针。

如果table_name声明为int*,你可以table_name = NULL;毫无问题地做,但是当 在索引处设置一个值时,编译器会期望你使用与数组相同的类型。

于 2012-06-20T01:06:57.910 回答
0

当我尝试将指针值分配给变量(总是相同的数据类型)时,编译器会做出相同的反应..

例子:

#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;   
}
于 2018-04-18T18:25:13.710 回答