函数指针 & 指针函数
http://blog.csdn.net/ameyume/article/details/8220832
函数输出多个值
#1 结构体
#include<stdio.h>
struct t{
int a,b;
};
struct t fun(int c,int d){
struct t res;
res.a=c+d;
res.b=c*d;
return res;
}
int main (void)
{
struct t n=fun(5,6);
printf ("%d\n",n.a);
printf ("%d\n",n.b);
return 0;
}
out put will be 11 and 30.
# 指针
//变相返回圆的面积、周长
void cir(double r,double *area,double *girth) // (输入,输出1,输出2)
{
*area=PI*r*r;
*girth=PI*r*2;
}
int main(int argc, char *argv[])
{
double r=10.2;
double s=0,g=0;
struct test *t1=getTest();
if(!t1)
return 1;
cir(r,&s,&g); (输入,输出1,输出2)
printf("area=%f,girth=%f\n",s,g);
printf("%d,%s\n",t1->x,t1->str);
if(t1)
{
free(&t1);
t1=NULL;
}
return 0;
}
%%%%%%%%%%%%%%
结构体 size:
在缺省对齐下我先给你说下三条准则吧,
【1】结构体变量的首地址能够被其最宽基本类型成员的大小所整除
【2】结构体每个成员相对于结构体首地址的偏移量是成员大小的整数背
【3】结构体的总大小为结构体最宽基本类型成员大小的整数背
以上都是结构体中只有基本类型时的缺省对齐方式,当有嵌套复合成员时,
【2】改为:复合成员相对于结构体首地址偏移量是复合成员最宽基本类型大小的整数背
所以分析你上面的
typedef struct node
{
int a[100];
char b;
}kkk;
先是第一成员400个字节,然后还有个char一个字节,为了满足第第三条准则,即总大小401为最宽基本类型的整数背,明显401不是最宽基本类型int(4)的整数背,所以总大小为404