找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4392|回復(fù): 7
收起左側(cè)

C語言小白函數(shù)指針問題assignment from incompatible pointer type [-Wincompatibl...

[復(fù)制鏈接]
ID:997026 發(fā)表于 2022-4-10 18:09 | 顯示全部樓層 |閱讀模式
一直對C語言指針比較陌生,最近在開始了解指針,寫了個簡單代碼(不實現(xiàn)任何功能,純粹是測試指針用法)想測試下自己寫的對不對,但是編譯后,錯誤是沒有,但總是有警告。
雖然沒有錯誤,但本著追求完美的宗旨,總是想搞清楚警告的原因,但找來找去,沒發(fā)現(xiàn)兩者指針類型不同啊,不都是unsigned short嗎?

對指針實在是了解不多,望大神指點,如下是代碼:

#include <atmel_start.h>

unsigned short adcacq0(int); //函數(shù)聲明
unsigned short adcacq1(int); //函數(shù)聲明
unsigned short (*adcacq)(int)=adcacq1; //函數(shù)指針變量聲明,同時賦初值
unsigned short adcacq2(unsigned short(*adcacq)(int),int);  //函數(shù)聲明,函數(shù)指針傳遞參數(shù)


int main(void)
{
        
        while (1)
        {
                adcacq2(adcacq0,9);
                adcacq2(adcacq1,8);               
        }
}



unsigned short adcacq2(unsigned short(*adcacq)(int),int x) //此函數(shù)里的代碼總是有警告
{
        unsigned short *Q=0, a=1;
        Q=adcacq;
        return (*Q+a);
}

unsigned short adcacq0(int acq)
{
        int a=0,b=0,c=0;
        a=b+c;
        return a;
}

unsigned short adcacq1(int swc)
{
        int d=0,e=0,f=0;
        d=e+f;
        return d;
}



編譯后沒有錯誤,但總是有警告消不掉:
assignment from incompatible pointer type [-Wincompatible-pointer-types],看了半天也沒看出來哪里類型不兼容?
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2022-4-10 18:54 | 顯示全部樓層
報錯會提示是哪一行,藏著遮著不讓大家看幾個意思?
回復(fù)

使用道具 舉報

ID:290373 發(fā)表于 2022-4-10 22:21 | 顯示全部樓層
51hei圖片20220410222005.png
把函數(shù)指針賦值給unsigned short指針了
回復(fù)

使用道具 舉報

ID:310441 發(fā)表于 2022-4-10 23:18 來自觸屏版 | 顯示全部樓層
Hephaestus 發(fā)表于 2022-4-10 18:54
報錯會提示是哪一行,藏著遮著不讓大家看幾個意思?

估計是來考驗大家的。下圖的提示信息說的再明白不過了……
回復(fù)

使用道具 舉報

ID:997026 發(fā)表于 2022-4-11 15:59 | 顯示全部樓層
田賀 發(fā)表于 2022-4-10 22:21
把函數(shù)指針賦值給unsigned short指針了

謝謝,我太小白了,函數(shù)指針只能指向函數(shù)的入口地址,只能指向類型相同的函數(shù),不能賦值給類型相同的普通變量
回復(fù)

使用道具 舉報

ID:139866 發(fā)表于 2022-4-11 16:30 | 顯示全部樓層
田賀 發(fā)表于 2022-4-10 22:21
把函數(shù)指針賦值給unsigned short指針了

盲猜這是VSCode
回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2022-4-12 09:03 | 顯示全部樓層
凡是對指針搞不定的,基根本原因的:
1、對CPU中存儲器的架構(gòu)不清楚
2、對數(shù)據(jù)的存儲格式也不清楚
3、對數(shù)據(jù)的訪問方式不清楚
建議:先弄清楚以上三點!
回復(fù)

使用道具 舉報

ID:997026 發(fā)表于 2022-4-13 23:25 | 顯示全部樓層
yzwzfyz 發(fā)表于 2022-4-12 09:03
凡是對指針搞不定的,基根本原因的:
1、對CPU中存儲器的架構(gòu)不清楚
2、對數(shù)據(jù)的存儲格式也不清楚

謝謝指點,目前處于指針學(xué)習(xí)的初級階段,確實很多不懂,感謝指明方向
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表