2 xyhqqlove xyhqqlove 于 2016.01.23 21:10 提问

invalid use of void expression

void dd(char* c)
{
int i=0;int j;
while (c[i]) i++;
i=i-1;
for(j=0;j<i/2;j++)
swap(c[j],c[i-j]);
}
int main()
{
char c[]="123";
printf("%s",dd(c));
}

4个回答

caozhy
caozhy   Ds   Rxr 2016.01.23 21:12
已采纳

printf("%s",dd(c));
->
dd(c);
printf("%s",c);

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.23 21:15

因为你的dd函数定义的返回值为void,而你使用时却将其作为有返回值的函数使用了,代入printf的第一个参数中了。
应该修正你的printf代码,不能打印dd(c)因为它没有返回值的。

yokees
yokees   2016.01.23 22:17

printf("%s",dd(c)); 语句有问题。

printf("%s",字符串指针); 这样才能输出。

dd(c) 返回值为空,也就是 void 类型。printf报错(函数参数无法匹配)

rl529014
rl529014   2016.01.23 21:29

主函数中printf()的输出参数是dd( )子函数的返回值,而子函数的返回值你设置的是void,肯定就出现问题了。
好比我不给你钱,叫你去买东西,你肯定不干,对吧

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
void指针变量的用法
比如void *P=...; 那么*P表示什么? warning: dereferencing 'void *' pointer [enabled by default] error: invalid use of void expression void*类型定义的指针变量只接收对象的地址,没有对象的类型概念。所以该指针变量是不能直接用 “*指针变量”去访问对象的,只能
Boost Thread学习笔记
Boost Thread学习笔记 thread自然是boost::thread库的主 角,但thread类的实现总体上是比较简单的,前面已经说过,thread只是一个跨平台的线程封装库,其中按照所使用的编译选项的不同,分别决定使用 Windows线程API还是pthread,或者Macintosh Carbon平台的thread实现。以下只讨论Windows,即使用 BOOST_HAS_
C语言中void和NULL
1 void 和void* (1) 介绍 《The C Programming  Language》 [1] void 附录A6.7:The(nonexistent) value of a void object may not be used in any way, and neitherexplicit nor implicit conversion to any non-void
ERROR:invalid operands to binary -
ERROR:invalid operands to binary - (二元减法运算的操作数无效。)代码如下:...typedef PACKED struct{ unsigned char chg_rule[MMIPT_MAX_CHG_RULE_LIST]; ...}MMIPT_CHG_RULE_T;void Example(...){
[C/C++]illegal use of this type as an expression报错的原因
刚遇到了一个很小的问题,和大家分享一下
c语言 void*的相关知识
比如void *P=...; 那么*P表示什么? warning: dereferencing 'void *' pointer [enabled by default] error: invalid use of void expression void*类型定义的指针变量只接收对象的地址,没有对象的类型概念。所以该指针变量是不能直接用 “*指针变量”去访问对象的,只能经强
Invalid operands to binary expression ('double' and 'double’)
Invalid operands to binary expression (‘double’ and ‘double’)在下面的代码中,实现功能是获取estimatedProgress是5的倍数的值做些操作, double estimatedProgress = 100; if(estimatedProgress%5==0) {——错误出现行 NSLog(@"");
gcc编译出现 invalid operands to binary -的解决方法
在做pcap库抓包的程序中,使用了: pcap_head->caplen - (unsigned int)(/*(unsigned char *)*/data - packet); 算式,然后就报“ invalid operands to binary -”。 检查代码,其中packet为char *型,pcap_loop的回调函数的第三个参数,data为根据各层字节计算出的TCP首部位置;但是
invalid use of non-static member function ‘void Date::init(int, int, int)’
C++成员函数的操作
illegal use of this type as an expression错误出现的原因
<br />C语言代码如下:<br /> <br /><br /><br />S32 x,y,w,h;<br />stFontAttribute f={0};<br />f.size = LARGE_FONT;<br />UI_filled_area filler = {0};<br /> <br />EntryNewScreen(SCR_MYAPP_MAIN,mmi_myapp_exit,NULL,NULL);<br />entry_full_screen();<br /> <br />重点看第四行,它的