提出一个问题:写一个函数,计算两个数相除,要求同时返回商和余数,怎么写?
我们知道函数的返回值只能有一个,同时返回两个数这跟本不可能。但用结构就变为可能了!代码如下:
struct Result{
int shang;
int yu;
};
struct Result div(int a,int b){
struct Result ret;
ret.shang = a/b;
ret.yu = a%b;
}
struct Result r = div(33432,44);
首先定义了结构Result,又定义了函数div,最后调用了函数。
注意以结构做为类型时,必须在结构名前带有关键字struct 。想不带也可以,那就需要用typedef为struct Result取个别名,这个名字可以仍然是Result,但这样就可以省掉关键字struct了(如果你的源文件是.cpp而不是.c,不用typedef 也可以省掉关键字struct)。如:
typedef struct Result{
int shang;
int yu;
}Result;
Result div(int a,int b){
struct Result ret;
ret.shang = a/b;
ret.yu = a%b;
}
Result r = div(33432,44);
可以看到结构出现的目的很简单:把一坨相关的变量,弄到一起,作为一个整体使用。
结构其实是一种自定义类型,就像系统已有的类型int ,long 等一样。
访问结构中的变量的方式是用“.”。结构中的变量叫成员变量。
结构也可以作为函数的参数。
如果一个函数需要返回多个参数,可以采用以下两种方法:
第一种方法是将返回值作为写参数。
第二种方法是定义一个结构,返回指向该结构的指针。