對象(object)賦給對象(object),地址(address)賦給地址(address)

funcA.c

直接上代碼:

#include "stdio.h"


struct NODE{


    int value;

    struct NODE *nextNode;

    struct NODE *preNode;

    

};


typedef struct NODE sNODE;


int main()

{

printf("main\n");


    sNODE NodeBrightness;

    sNODE NodeContrast;

    sNODE NodeSharp;

    

    NodeBrightness.value = 50;

    NodeBrightness.nextNode = NodeContrast;


    

    printf("Brightness = %d\n", NodeBrightness.value);

    printf("Contrast = %d\n", NodeContrast.value);

    printf("Sharpness = %d\n", NodeSharp.value);


    printf("Brightness next value = %d\n", NodeBrightness.nextNode->value);

    

    return 0;


}

編譯:

$ gcc -o NextNode funcA.c 


編譯錯誤:

funcA.c:22:29: error: assigning to 'struct NODE *' from incompatible type 'sNODE' (aka 'struct NODE'); take the address

      with &

    NodeBrightness.nextNode = NodeContrast;

                            ^ ~~~~~~~~~~~~

                              &

1 error generated.

提示:不兼容類型,我們把一個變量NodeContrast賦給一個地址NextNode,NextNode是結構體的一個指針型的數據,所以它是一個地址。而NodeContrast是一個變量對象。
把第22行改爲:

    NodeBrightness.nextNode = &NodeContrast;

再次編譯:

$ gcc -o NextNode funcA.c

成功,執行:

./NextNode

輸出:

main

Brightness = 50

Contrast = 0

Sharpness = 0

Brightness next value = 0






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章