繁体   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