首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组元素不能做形参,那么结构体成员可以作形参使用么

2013-11-19 
数组元素不能作形参,那么结构体成员可以作形参使用么?看书的时候看到说数组元素只能做函数实参,不能做函数

数组元素不能作形参,那么结构体成员可以作形参使用么?
看书的时候看到说数组元素只能做函数实参,不能做函数形参。我的理解是:
int F(int a[10]),其实此处a是一个指针变量(也就是数组名,c把数组名作为指针变量),所以我们可以不限定里面的数组大小,int F(int a[ ]),所以数组元素作形参没意义。
那么结构体成员呢? 可以作为形参么? 感觉自己写的时候,不好下手,不论是定义,还是初始化。所以想请教大神告诉。然后最好能写个小小的例子参考下。
比如void days(int judge.year,int judge.month,int judge.day) 事先定义好judge为一个结构体。这样可以么? 能不能写个例子来看看具体怎么实现? 个人见解,不足之处还望见谅!楼主加油!共勉!
[解决办法]
数组元素不能做形参,那么结构体成员可以作形参使用么
[解决办法]

引用:
Quote: 引用:

在参数里使用数组,实际上会退化成普通的指针。
结构体的话不是这样用的,参数是有参数类型和类型名组成的。参数名只是个普通的名称,不能定义成XX.YY的形式。你想要传递结构体的成员,这是你调用时的事情,你调用的时候可以A(p.x,p.y),但不能实现指定好。或者你可以让完整的一个结构体类型做参数,也可以是这个结构体的指针或引用(C++)
感觉这时候x.x已经就是一个类似指定好数据类型的变量,把它看作整体,比如结构体x的成员int x  可以看作int x.x x.x当作整体。不就可以作为形参出现了么? 那么是编译器不通过这中格式? 可以不可以把x.x赋给一个类型相同的变量,就可以作为形参了?  这样不就意味着它实际是可以? 只是不支持x.x这种格式? 好吧,我都没办法用具体的函数实现,所以都是臆想的。。。


理解有点不妥!函数传参的时候,只要类型和函数的原型匹配就好了!至于是结构体的成员,还是结构体中成员的成员都是没有关系的!因为编译器也不会知道!它只是检查传进来的参数和函数原型是否匹配就好!

[解决办法]
感觉int judge.year完全不合语法的东西能用吗?真心没看过...
[解决办法]
引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

在参数里使用数组,实际上会退化成普通的指针。
结构体的话不是这样用的,参数是有参数类型和类型名组成的。参数名只是个普通的名称,不能定义成XX.YY的形式。你想要传递结构体的成员,这是你调用时的事情,你调用的时候可以A(p.x,p.y),但不能实现指定好。或者你可以让完整的一个结构体类型做参数,也可以是这个结构体的指针或引用(C++)
感觉这时候x.x已经就是一个类似指定好数据类型的变量,把它看作整体,比如结构体x的成员int x  可以看作int x.x x.x当作整体。不就可以作为形参出现了么? 那么是编译器不通过这中格式? 可以不可以把x.x赋给一个类型相同的变量,就可以作为形参了?  这样不就意味着它实际是可以? 只是不支持x.x这种格式? 好吧,我都没办法用具体的函数实现,所以都是臆想的。。。


理解有点不妥!函数传参的时候,只要类型和函数的原型匹配就好了!至于是结构体的成员,还是结构体中成员的成员都是没有关系的!因为编译器也不会知道!它只是检查传进来的参数和函数原型是否匹配就好!

所以说void days(int judge.year,int judge.month,int judge.day) 这样的格式也可以?只不过把judge.year作为一个int型的变量看待?因为显然可以用比如int a,来作为 judge.year的形参,那同样可以把 judge.year作为形参吧,虽然完全没必要如此。另外a.b这样的格式形参支持么?
.

恩!对的!只要参数的类型匹配就好啦!
[解决办法]
不要纠结这个,无实质意义算了吧...
[解决办法]
非用不可你就自己写个例子试试不就知道了吗,看各位的回答多努力
[解决办法]
按错了...
void A(int x,int y){}//普通定义

A(p.x,p.y)//传递指定的结构体成员

void A(Point p){}//结构体做整体定义

A(point);//传递整个结构体

热点排行