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 に答える