簡體   English   中英

Function 在 C 中帶有指針類型返回和指針參數

[英]Function with Pointer type return and pointer argument in C

我試圖將傳遞指針理解為參數和指針返回類型 function。 類似的概念適用於字符串,但不適用於整數。 有人可以在下面的代碼中找到問題並更正它。 錯誤信息是

無法將“int**”轉換為“int*”

' 提前謝謝了。

#include <stdio.h>
int *findMax(int *num1, int *num2)
{
    if (*num1 > *num2)
    {
        return (num1);
    }
    else
    {
        return (num2);
    }
}

int main(void)
{
    int *_num1;
    *_num1 = 10;
    int *_num2;
    *_num2 = 12;
    int *bigger;
    bigger = findMax(&_num1, &_num2);
    return 0;
}

您創建了兩個int指針 - 但它們實際上並不指向任何int s,因此當您取消引用它們以分配值時,您會得到未定義的行為

int main(void)
{
    int _num1 = 10; // note: not a pointer
    int _num2 = 12; // note: not a pointer
    int *bigger;
    bigger = findMax(&_num1, &_num2); // here you take the addresses of the int:s
    printf("%d\n", *bigger);
}

無法將“int**”轉換為“int*”

這個錯誤讓你免於很多痛苦。 由於您將這兩個變量聲明為int* ,因此獲取此類變量的地址會產生一個int** ,這不是您的 function 接受的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM