LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 787|回复: 9

这段代码什么意思?

[复制链接]
发表于 2005-4-28 00:05:24 | 显示全部楼层 |阅读模式
#include <iostream.h>

typedef int array[8];

int a[8] = {1, 3, 5, 7, 9, 11, 13};

void fun(array &b, int n)
{
for(int i=0; i<n-1; i++)
b[7]+=b;
}

void main()
{
int m=8;
fun(a, m);
cout<<a[7]<<endl;
}

我有几点不明白:
1、typedef将int定义为一个数组是什么意思?
2、a[8]为什么只有7个元素?
3、fun函数用array定义&b是什么意思?
4、b[7]是what?

本人比较弱,请别笑话!
发表于 2005-4-28 08:14:47 | 显示全部楼层
1.typedef是定义了array为一个长度为8的int数组类型。
2.第8个用有其他用途(后面讲)。
3.因为前面已经定义了array这个新类型,现在就可以用它来申明参数或变量。这里是一个引用参数。
4.b[7]就是前7个数的总合。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-28 18:43:31 | 显示全部楼层
3Q

typedef int array[8];
这个语法是,遇到int的地方就直接“替换”为array[8]吧?
那它下边的一行在编译预处理之后就应该是
array[8] a[8] = {1, 3, 5, 7, 9, 11, 13};
是吗?
回复 支持 反对

使用道具 举报

发表于 2005-4-28 19:26:12 | 显示全部楼层
#define替换,typedef不替换,
那个可以理解为array = int[8];
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-29 22:22:44 | 显示全部楼层
引用传递不是好习惯

以后不用这个了
回复 支持 反对

使用道具 举报

发表于 2005-4-30 01:54:39 | 显示全部楼层
Post by macarthor
引用传递不是好习惯

以后不用这个了

谁说引用传递不是好习惯??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 07:31:11 | 显示全部楼层
一般都是用数值传递或者地址传递吧

引用传递有什么优点吗?什么时候必须用引用传递吗?
回复 支持 反对

使用道具 举报

发表于 2005-4-30 08:21:28 | 显示全部楼层
你是没学过c++。你应该是从来没听说过引用吧。c++里用引用几乎同用指针一样频繁。

完全的面象对象的语言,如java。只有引用。用了引用也许很容易做到内存托管。安全性也好。不会出现低级的指针错误。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 18:34:20 | 显示全部楼层
Post by masterdemon
你是没学过c++。你应该是从来没听说过引用吧。c++里用引用几乎同用指针一样频繁。

完全的面象对象的语言,如java。只有引用。用了引用也许很容易做到内存托管。安全性也好。不会出现低级的指针错误。


放假7天我要天天上C++!!!
回复 支持 反对

使用道具 举报

发表于 2005-4-30 18:55:11 | 显示全部楼层
引用要比指针好用而且方便许多。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表