C語(yǔ)言中類型轉(zhuǎn)換不匹配的解決方案
錯(cuò)誤示范:
#include<stdio.h>
#include<stdlib.h>
typedef struct HFTNode
{
int data;
struct HFTNode *lchild,*rchild;
}HFTNode,*HFTree;
int main()
{
HFTree root=NULL;
root = (HFTree)malloc( sizeof(HFTNode) );
root->data = 1;
root->lchild = NULL;
root->rchild = NULL;
printf("%d \n",root->data);
HFTNode node = NULL;
node = (HFTree)root;
printf("%d \n",node.data);
return 0;
}原因:
上述代碼中,
HFTNode node = NULL;
這一行會(huì)出現(xiàn)類型不匹配的錯(cuò)誤,原因在于:
此時(shí)HFTNode是一個(gè)結(jié)構(gòu)體類型(非指針類型),而 NULL通常被定義為 (void*)0,是一個(gè)空指針常量。
現(xiàn)試圖將一個(gè)指針值(NULL)賦給一個(gè)結(jié)構(gòu)體變量(node),這在 C 語(yǔ)言中是不允許的,因?yàn)樗鼈兊念愋筒患嫒?> 修正方法如下:
如果想定義一個(gè)指向HFTNode的指針變量,應(yīng)該這樣寫(xiě):
HFTNode *node = NULL;
這樣 node就是一個(gè)指針,可以賦值為 NULL,也可以指向已經(jīng)分配的HFTNode 結(jié)構(gòu)體。
另外,在后面的 node = (HFTree)root; 中,如果 node已經(jīng)是指針類型,那么直接寫(xiě) node = root; 即可,因?yàn)?root也是 HFTree類型(即HFTNode*),無(wú)需強(qiáng)制類型轉(zhuǎn)換。
修改結(jié)果:
#include<stdio.h>
#include<stdlib.h>
typedef struct HFTNode
{
int data;
struct HFTNode *lchild,*rchild;
}HFTNode,*HFTree;
int main()
{
HFTree root=NULL;
root = (HFTree)malloc( sizeof(HFTNode) );
root->data = 1;
root->lchild = NULL;
root->rchild = NULL;
printf("%d \n",root->data);
HFTNode *node = NULL;
node = root;
printf("%d \n",node->data);
return 0;
}到此這篇關(guān)于C語(yǔ)言中類型轉(zhuǎn)換不匹配的解決方案的文章就介紹到這了,更多相關(guān)C語(yǔ)言 類型轉(zhuǎn)換不匹配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解C語(yǔ)言中不同類型的數(shù)據(jù)轉(zhuǎn)換規(guī)則
- C語(yǔ)言數(shù)據(jù)類型轉(zhuǎn)換實(shí)例代碼
- C語(yǔ)言強(qiáng)制類型轉(zhuǎn)換規(guī)則實(shí)例詳解
- 淺談c語(yǔ)言中類型隱性轉(zhuǎn)換的坑
- C語(yǔ)言中強(qiáng)制類型轉(zhuǎn)換的常見(jiàn)方法
- 詳解C語(yǔ)言基礎(chǔ)的類型轉(zhuǎn)換
- C語(yǔ)言類型轉(zhuǎn)換與常量的細(xì)節(jié)深入理解探究
- C語(yǔ)言簡(jiǎn)明講解類型轉(zhuǎn)換的使用與作用
- C語(yǔ)言中的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)經(jīng)典掃雷小游戲的示例代碼
掃雷游戲是在一個(gè)指定的二維空間里,隨機(jī)布置雷,把不是雷的位置都找出來(lái),在你點(diǎn)一個(gè)位置的時(shí)候它會(huì)顯示它周圍全部雷的個(gè)數(shù),根據(jù)這個(gè)線索去找 ,會(huì)更容易贏。本文將用C語(yǔ)言實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以嘗試一下2022-11-11
c++函數(shù)指針和回調(diào)函數(shù)示例
這篇文章主要介紹了c++函數(shù)指針和回調(diào)函數(shù)示例,需要的朋友可以參考下2014-05-05
gazebo里通過(guò)節(jié)點(diǎn)發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動(dòng)實(shí)現(xiàn)詳解
這篇文章主要介紹了gazebo里通過(guò)節(jié)點(diǎn)發(fā)布topic讓關(guān)節(jié)轉(zhuǎn)動(dòng)實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
C++實(shí)現(xiàn)LeetCode(11.裝最多水的容器)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(11.裝最多水的容器),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
Qt 使用Poppler實(shí)現(xiàn)pdf閱讀器的示例代碼
下面小編就為大家分享一篇Qt 使用Poppler實(shí)現(xiàn)pdf閱讀器的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
C++實(shí)現(xiàn)LeetCode(18.四數(shù)之和)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(18.四數(shù)之和),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

