嵌入式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));
}
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));
}
相关文章推荐
- ecmall 模板之挂件设计
- 密码学作业 流加密(C语言)
- jQuery Mobile设计思想
- x64 linux 下C语言、AT&T格式…
- C语言的条件编译#if, #elif…
- C语言 约瑟夫环问题:用户输入M,N…
- 【转】 C++ 右值引用详…
- C++语言的设计与演化 读书笔记二
- C语言竞赛题 - 将数表示成质因子成…
- android 是值传递还是引用传递?
- 引用 LPSTR、LPCSTR、LPTSTR…
- 关于 23 种设计模式的有趣见解
- C++ 引用 指针 智能指针 拷贝构造
- SQL SERVER中建立索引及引用
- C语言 HTTP 下载文件
- java 按学号查询的界面设计 Border…
- 【C语言】01 Hello World!
- C++语言的设计与演化 读书笔记一
- 多线程设计模式:Guarded Suspensi…
- C++ 引用 指针 智…