嵌入式笔记day05

附加格式说明符

修饰符功能
m输出数据域宽,数据长度<m,左补空格,否则按实际输出
.n对实数,指定小数点后位数 / 对字符串,指定实际输出位数
-输出数据在域内左对齐(缺省右对齐)
+指定有符号数在正数前显示正号(+)
0输出数值时指定左面不使用的空位自动填0
#在八进制和十六进制数前显示0,0x
1在d, o, x, u前,指定输出精度为long型
1在e, f, g前,指定输出精度为double型

输入

  1. getchar(); 从键盘读一字符

  2. scanf(“格式控制串”, &地址表);
    输入数字时,多个同时输入(%d%d%d)可用空格分隔

  3. 格式输入函数:scanf函数支持的格式说明符可以带一下修饰符,当使用对应类型的变量时需要加上修饰符

修饰符功能
h用与d, o, x前,指定输入为short型整数
1用于d, o, x前,指定输入为long型整数
1用于e, f前,指定输入为double型实数
m指定输入数据宽度,遇空格或不可转换字符结束
*抑制符,指定输入项读入后不赋给变量
  1. 字符输入问题:
//使用输入函数可能留下垃圾

	int x;
	char ch;
	scanf("%d", &x);
	scanf("%c", &ch);
	printf("x=%d,ch=%d", x, ch);	//第一次输入时的换行键会被第二个scanf读取

//解决办法:(1)用格式串getchar()清除;(2)用格式串中空格或%*c清除

	int x;
	char ch;
	scanf("%d", &x);
	putchar();
	scanf("%c", &ch);
	printf("x=%d,ch=%d", x, ch);	

	int x;
	char ch;
	scanf("%d", &x);
	scanf("%*d%c", &ch);
	printf("x=%d,ch=%d", x, ch);

	int x;
	char ch;
	scanf("%d", &x);
	scanf(" d%c", &ch);
	printf("x=%d,ch=%d", x, ch);
  1. 开方的写法
#include<math.h>	//	包括所有初等函数
sqrt();
//gcc默认指定头文件对应的库文件中不包括math库,即math库不是gcc默认指定的库文件,编译时需要将gcc手动指定到math库
//在进行编译时可以直接加上-lm选项,-l为指定库,m为math库。
//该问题及其解决方式引用至https://blog.csdn.net/wangqingchuan92/article/details/115261070《编译错误“ undefined reference to ‘sqrt‘ ”解决方法小结》

全局变量

  1. 在函数体外声明的变量,定义方式与局部变量一致,存储位置在数据段,在main函数运行之前就声明了,在软件运行结束之后才销毁,不可设置过多。
  2. 变量存储类型auto,register:
    (1)都只能用于声明局部变量
    (2)局部变量加了auto和不加没有区别,为缺省值
    (3)auto变量存储于内存条,register存在cpu的寄存器。register访问时速度更快,但一般没有必要使用register
    (4)cpu寄存器无指针概念

extern

  1. 一般情况下函数为后面可调用前面,前面不可调用后面。通过体现声明可实现前面调用后面。此时全局变量放在声明后,函数前(若要将全局变量放在后面也可提前声明)
    extern为声明前缀,是缺省值
void f1();
void f2();
viod f3(int a, int b);
int x;

void f1()
{
	f2();
}

void f2
{

}

void f3(int a, int b)
{

}

int x = 50;

int main()
{
	f1();
	f2();
	f3(int a, int b);
	return 0;
}
  1. 头文件组件项目
    (1)创建一个.c文件就要 创建一个.h文件,比如创建one.c就要创建one.h,然后.c文件中导入h文件,比如one.c中导入one.h
    (2).h文件的写法,把所有函数和全局变量都声明。声明使用如下结构包裹起来
#ifndef ONE_H
#define ONE_H

extern int jian(int a, int b);

#endif

(3).c文件要访问别的.c文件终端函数或全局变量就要导入相应的.h文件
(4)main函数所在的文件,假设文件名为main.c
I.不必要写一个对应的.h文件,只需要把除main函数以外的函数和全局变量声明在最前面
II.也可以写一个对应的.h文件,然后声明除main函数之外的函数和全局变量,然后在main.c中导入main.h
III.编译时所有的.c文件(注意所在相对目录)
各个函数关系

  1. 导入头文件问题:
    <xxxx.h>:直接从系统中找
    “xxxx.h”:先从用户写的文件中找,找不到就从系统中找。引号终端文件是文件的相对路径(当前文件所在目录),如果存放在子目录,应写文件目录。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值