您的位置:首页 > 运维架构 > Linux

嵌入式linux c语言引用设计

2013-05-07 20:13 148 查看
未完持续

4.1
csb@csb-ThinkPad-E430c:~/code/c$ cat
float.c
#include
void main()
{
float a;
double b;
a=33333.333333333333333;//float,有效数字7位
b=33333.333333333333333;//double,有效位数16
printf("a=%f\nb=%f\n",a,b);
}
csb@csb-ThinkPad-E430c:~/code/c$
./float
a=33333.332031
b=33333.333333

字符常量
字符常量只能用单引号括起来,不能用双引号或其他括号
字符常量只能是单个字符不能是字符串
'5'!=5

枚举类型
定义枚举变量使其的取值被限定在一个有效范围;
enum name{
所有取值;
};
enum sgp_type{
SGP_QUICK=2,
SGP_READ=9,
SGP_CACHE=19,
SGP_WRITE=64,
};

void swap(int *p1,int *p2)
{
int *temp;
temp=p1;
p1=p2;
p2=temp;
}
指针作为函数参数

函数调用中发送的数据传送是单向的,只能吧实参的值传送给形参,而不能把形参的值反向传送给实参
下面例子具体说明这个问题:
#include
void swap(int *p1,int *p2)
{
int temp;
printf("swap:\naddr:p1=%p,p2=%p\n",p1,p2);
temp=(*p1);
*p1=*p2; *p2=temp;
printf("addr:
temp=%p,p1=%p,p2=%p\n",&temp,&(*p1),&(*p2));//p1,p2指向的地址没改变,指向地址的内容变了

}
void swap1(int *p1,int *p2)
{
int *temp;
printf("swap1\naddr:p1=%p,p2=%p\n",p1,p2);
temp=p1;
p1=p2; p2=temp;
printf("addr:temp=%p,p1=%p,p2=%p\n",&(*temp),&(*p1),&(*p2));//p1,p2是形参指向地址改变了,p3,p4是实参,指向地址没有改变
printf("value:temp=%d,p1=%d,p2=%d\n",*temp,*p1,*p2);
}
void main()
{
int a=10,b=20;
int *p3,*p4;
p3=&a;
p4=&b;
printf("before swap\n");
printf("a=%d,b=%d,a=%p,b=%p,p3=%p,p4=%p\n",a,b,&a,&b,&(*p3),&(*p4));
swap(p3,p4);
printf("swap\na=%d,b=%d,a=%p,b=%p,p3=%p,p4=%p\n",a,b,&a,&b,&(*p3),&(*p4));

*p3=10;
*p4=20;
swap1(p3,p4);
printf("swap1\na=%d,b=%d,a=%p,b=%p,p3=%p,p4=%p\n",a,b,&a,&b,&(*p3),&(*p4));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: