C语言中,用结构体作函数参数的问题? 30

假如我定义了一个结构体和一个函数,如下:typedefstruct{charr;charg;charb;}RGBColorvoidtest(RGBColorcolor){... 假如我定义了一个结构体和一个函数,如下:
typedef struct {
char r;
char g;
char b;
} RGBColor

void test (RGBColor color) {
...
}

在引用test函数时,可以这样:
RGBColor color = {0x0,0x1,0x2} ;
test(color);

但我想直接给RGBColor的值,例如:
test({0x0, 0x1, 0x2})
但这样keilc会报错!

请问有什么办法可以不需要重新定义一个RGBColor的变量,而直接在函数引用时赋值吗?
展开
 我来答
songwanqiang
2010-07-30 · TA获得超过2399个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:943万
展开全部
可以的,这样写:
test((RGBColor){0x0, 0x1, 0x2});
这个意思是把{0x0, 0x1, 0x2}强制转化为RGBColor类型。从语法语义上面是没问题的,在GCC编译没问题。
但是51上面没实验,按C标准能说得通,你可以试一试。
我自己的神话i
2010-07-30 · 超过12用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:34.7万
展开全部
当然可以了,首先定义一个RGBColor结构体
typedef struct {
char r;
char g;
char b;
} RGBColor;
然后定义一个结构体变量
RGBColor color;
然后定义一个函数给color中的三个变量都赋值如:
void test(int a,int b,int c)
{
color.r=a;
color.g=b;
color.b=c;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaohui240
2010-07-30 · TA获得超过145个赞
知道答主
回答量:127
采纳率:0%
帮助的人:56.7万
展开全部
貌似不是很好搞,如果是C++里面还可以用new,但是如果没有变量名的话也不好delete。所有还是老老实实用前面的方法。我觉得就多一句话没什么大不了的,性能也不见得就一定优化了多少。
如果代码非要写的只有自己看的懂,而别人都很难看懂的话。其实不是表示你多牛X,而说明你的代码维护起来非常复杂。
不要非要学习孔乙己回字有多少种写法,如果你能掌握一种,ok,够了。你能够完成相应的功能,别人一看就懂了。这就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我没有车和房
2010-07-30
知道答主
回答量:27
采纳率:0%
帮助的人:0
展开全部
typedef struct RGBColor{
RGBColor( char _r,char _g, char _b ): r(_r),g(_g),b(-b){}
char r;
char g;
char b;
} RGBColor;

void test (RGBColor color) {
}

//////////////////调用///////////////////
test(RGBColor('a','b','c'));

不知道这样满足你的要求不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月月相望
2010-08-02 · 超过15用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:53万
展开全部
可以设置r,g,b为全局变量,对全局变量赋值后 ,如果想要改变值,可以在函数内部再赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式