簡體   English   中英

當將char指針分配給字符數組時,賦值使整數指針不帶強制轉換[默認啟用]

[英]assignment makes pointer from integer without a cast [enabled by default] when assigning char pointer to character array

我試圖返回一個指向字符數組的指針。 該功能位於其他文件中。 我將文件編譯在一起,它可以很好地打印出“ hello”,但仍會發出警告

警告:賦值使指針從整數開始而沒有強制轉換[默認啟用]

我嘗試將function()的返回值強制轉換為(char *) ,但最終得到了不同的警告:

警告:從不同大小的整數[-Wint-to-pointer-cast]“強制轉換為指針。

我究竟做錯了什么?

文件1

#include <stdio.h>                                                                                        

int main()                                                                                                
{                                                                                                                                                                                                   
   printf("%s\n", function());                                                                                   
   return 0;                                                                                               
}

文件2

#include <stdio.h>                                                                                       

char *message = "hello";                                                                                 

char *function()                                                                                         
 {                                                                                                        
  return(message);                                                                                       
 }                                                                                                        

這里的問題是缺少原型。 由於歷史原因,C允許您使用函數而無需聲明它們。 但是,所有此類函數均被視為返回int ,並且其所有參數也均被視為int

由於您的函數返回char* ,因此您需要為其添加一個原型(為所有函數(包括確實返回int函數)提供原型是一個好主意):

#include <stdio.h>                                                                                        

char *function(); // <<== Add this line

int main()                                                                                                
{                                                                                                                                                                                                   
   printf("%s\n", function());                                                                                   
   return 0;                                                                                               
}

暫無
暫無

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

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