当前位置:编程学习 > C/C++ >>

c语言编程问题

下面是书上例题,有几处不懂: #include<iostream> using namespace std; class Time { puulic: int hour; int minute; int sec; }; int main() { void set_time(Time&); void show_time(Time&); Time t1; set_time(t1); show_time(t1); Time t2; set_time(t2); show_time(t2); return 0; } void set_time(Time& t); { cin>>t.hour; cin>>t.minute; cin>>t.sec; } void show_time(Time& t) { cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl; } 1、main函数里的“void set_time(Time&); void show_time(Time&);”,为什么括号里是Time&呢?什么含义? 2、void set_time(Time& t); void show_time(Time& t) 括号里又为什么是Time& t呢?什么含义? 谢谢。。。。
追问:不知所云来混分呢你?
答案:一楼的别误导人啊。
介就是引用功能的啦,比如:
int b;
int &a = b;
那么a 就是 b的别名了,再形象一点,比如有个银叫张三,他还有个小名叫小三,那么小三就是这个a,张三就是这个b了,懂了吧。建议楼主回去好好看看谭浩强老师的书吧.....囧。
其他:1 声明函数。指针参数
2 指针参数 传引用 C不支持哦,只有C++编译器才支持,你这个应该是C++的问题了

函数原型可以不给参数名,只给参数类型

传引用同 void set_time(Time *t); 类似
只不过 调用时 funcxx(&p) 取地址 的方式由编译器帮你搞定了调用者不用取地址,调用时非常“舒服” 如 funcxx(p) 就行了,实际传的是&p
建议少用这种方式,因为调用者不注意的话都不知道是取了值,还是取了地址 
--------------------------------------
建议少使用理由错了,这种方式使用比C的指针方便,但我是鼓吹代码最大限度的可重用,显然用这种方式在C中就没法使用了,所以还是用原始的“指针”方式代码可移值度最好! Time& t 定义了一个Time类型的 引用,相当于给传进来的参数去了一个别名。
引用的原理和指针很像,区别指针传入的参数为变量类型的指针,而引用传入的直接是变量类型。你可以理解为虽然定义了一个t的Time类型结构变量,但是使用的存储空间指向传入的参数,相当于使用了已存在的传入变量在子函数里做计算,因此使用引用不会产生数据的副本,也不会有数据复制的过程,从而节约时间和内存,这一点在向函数传入大型结构或者类的实体时很有用。
引用的具体好处:
1.可以向主函数返回多个数据。
  这点用法和指针类似。我们知道函数的类型决定了函数的返回值类型,如果函数有多个或者多种数据需要传递给主函数,返回值的方法肯定是不够用的,使用指针或者引用就可以解决这个问题,因为子函数直接基于传入的参数进行计算,所以在计算的过程中就已经将所有计算结果返回给了主函数。
2.与直接传递变量的做法相比,更能节约时间和内存:
  这点也与指针类似,前面已经讲过,不重复了。
3.避免指针类型转换和空指针的意外。
  与指针相比较。引用定义的类型直接是变量类型,不需要经过转换,因此降低了编程复杂度,提高了程序的直观度,另外,在任何时候引用都不允许有空引用的存在,例如,下面的这种定义方法是不允许的:
int a=3;
int& b;
b=a;
要改为下面赋值方易做图确:
int a=3;
int& b=a;
因此相对指针而言,引用降低了程序由于人为疏忽忘记赋值而出错的风险。 楼上说的对  printf("%i ", numbers[j]);
在后面加一个空格,输出的是:1 1 2 4 8 16 32 64 128 256
当执行2个for之后赋值如下:
numbers[0]=1
numbers[1]=numbers[0]=1
***
**
numbers[9]=numbers[0]+***+numbers[8]=256

上一个:求个好用的Visual C++6.0 软件 我刚刚开始学c语言 准备考c语言2级考试 用的是谭浩强的c语言设计那本书
下一个:求C语言改错...

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,