首页 新闻 会员 周边

C语言复合字面量

0
悬赏园豆:5 [已解决问题] 解决于 2012-03-17 21:34

程序到底对不对

 

 

#include<stdio.h>
void fun(int *a)
{
 *a+=2;
}
int main()
{
 //int i;
 printf("%d\n",fun((int[]){5});//为啥不对,fun(&5)肯定不对,再设变量我知道对
 return 0;
}

加拿大小哥哥的主页 加拿大小哥哥 | 初学一级 | 园豆:183
提问于:2012-03-17 12:56
< >
分享
最佳答案
1

问题是蛮简单的,复合常量是C99标准新添加的特性:

fun((int[]){5}))这种写法是定义一个匿名数组变量,相当于int a[] = {5}; f(a);

编译的时候需要添加-std=c99就可以了。


说一下你的代码,就这么一点代码就有2个错误,这样的代码能编译通过吗?

1:printf("%d\n",fun((int[]){5}); 少一个括号printf("%d\n",fun((int[]){5}));

2: fun返回类型是void,却要printf返回数值

测试代码

收获园豆:5
zsounder | 老鸟四级 |园豆:2819 | 2012-03-17 16:56

C:\Users\Administrator\Desktop\新建文件夹\Text1.txtklalk.c(10) : error C2059: syntax error : '{'

 

 

老是这个问题,修改后也这样,希望您给我具体改一下

加拿大小哥哥 | 园豆:183 (初学一级) | 2012-03-17 21:41

知道啦,我刚用博客园,不知道他的强大功能

加拿大小哥哥 | 园豆:183 (初学一级) | 2012-03-17 21:48
其他回答(3)
0

你这是要干嘛啊,用参数么?

夜雨星辰- | 园豆:194 (初学一级) | 2012-03-17 13:09

对,我知道int i=5;fun(&i)可以;今天看了一本书,495个c语言问题,里面说fun(&5)不对,可以用复合字面量fun((int[]){5}),但编译通不过

支持(0) 反对(0) 加拿大小哥哥 | 园豆:183 (初学一级) | 2012-03-17 13:13

@火星十一郎: fun((int[]){5}),我也没听过,你是想要为上面函数传个指针么?

支持(0) 反对(0) 夜雨星辰- | 园豆:194 (初学一级) | 2012-03-17 13:18
0

fun没有返回值????

猫捕手 | 园豆:210 (菜鸟二级) | 2012-03-17 16:26

你调试下,即便有返回值也是编译通不过,求高手,求高手

支持(0) 反对(0) 加拿大小哥哥 | 园豆:183 (初学一级) | 2012-03-17 16:32
0

void fun(int *a)

{

  *a+=2;

}

应该变成有返回值的函数为

int fun(int *a)

{

  return *a+=2;

}

幸福叶子66 | 园豆:202 (菜鸟二级) | 2013-02-21 12:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册