C/C学习笔记/导言

来源:互联网 发布:cloverv3.3是什么软件 编辑:程序博客网 时间:2024/05/11 04:30

C学习笔记

——导言

这一章主要在于介绍一些基本知识,内容跨度较大、较乱。

一、程序组成

一个C语言程序,无论其大小如何,均由函数变量组成。
函数中包含语句,用于指定要执行的计算操作。
变量用于存储计算过程中使用的值。
函数与函数之间进行数据交换的一种方法是调用函数向被调用函数提供一个值表——即:参数

二、printf简介

printf是一个宏定义函数。
若不通过添加转义字符“\n”,其输出内容永远不会自动换行。(回车"\r"与换行“\n”之间有区别,前者是文本光标返回到本行开头,后者是文本光标移动到下一行而不返回行首这与操作系统有关

ANSI标准定义了printf函数的行为,对每个符合该标准的编译器和库,使用均相同。

printf("%d\n",var)默认是左对齐格式。
如果其第一个参数的%d中指明了打印宽度,则右对齐格式。如%3d为打印至少占3个字符宽的整形量,超出3个字符宽度不会截取!(但此时为左对齐格式,这也是为什么默认%d输出为左对齐格式)
:以"%3d\n"格式打印:1,10,100,1000;
输出如图


对于浮点型打印来说,以小数点为界,小数点前为打印字符宽度(至少,可省略),小数点后为打印有效小数位(四舍五入)。


另外,
字符输出形式d,i十进制数o无符号八进制数(不会自带前缀0)x,X无符号十六进制数(同上)u无符号十进制数c单字符s字符串,遇‘\0’则打印结束f十进制小数(默认小数有效位为6)e,E科学计数法,e/E表示10(默认小数有效位为6)(输入格式须为double型)g,G如果指数小于-4或大于等于精度,则用%e或%E格式输出,否则用%f格式输出(小数点及其后0不打印)p指针%打印一个百分号(利用“\%”号似乎也可实现)



三、变量

所有变量必须先声明后使用
声明分为定义性声明引用性声明。区别在于声明时是否分配存储空间给该变量。如"int a"属于前者,在声明时即分配了地址给它;“extern int a”属于后则,仅用于说明该变量已在别处定义过。

变量类型(摘自http://c.biancheng.net/cpp/html/437.html)



四、字符输入输出

标准库提供的输入/输出模型是按照字符流的方式。
文本流是由多行字符构成的字符序列。每行字符则由0个或多个字符组成,行末是一个换行符('\n')。文件末尾有EOF(End Of File),值为-1.

一次性只读入/输出一个字符。
getchar(void)
putchar(char c)

五、函数

函数一般形式为:
返回值类型函数名(0个或多个参数声明)
{
声明部分;
语句序列;
}

出现在main函数之前的声明,称为函数原型
函数原型与函数声明中的参数名不要求相同,甚至原型中的参数名也是可有可无的。
如:int FUN(int, int);

六、传值调用

C语言中,所有函数参数都是“通过值”传递的。也就是说,传递给被调用函数的参数值存放在临时变量中,而不是存放在原来的变量中。被调函数不能直接修改主调函数中变量的值,而只能修改其私有的临时副本的值。参数可以看作是便于初始化的局部变量

但必要时,也可以让被调函数修改主调函数中的变量

此时,调用者需要向被调用者提供参数的地址(可以简单看作是指针),此时虽然指针是个“临时变量”,但指针指向的值是“原变量”。

同时,数组参数的传递也是地址。其传递过程是主调函数将数组的首地址传递给被调函数,而不是数组元素本身

七、return 与 exit

return 表达式;

表达式可有可无。

区别:

return是将控制权返回给上一级调用函数;

exit是将控制权返回给操作系统。

八、外部变量及作用域

局部变量——自动变量
函数中的每个局部变量只在函数被调用时存在,在函数执行完毕退出时消失。(故此被称为自动变量

外部变量——全局变量
定义必须在所有函数之外,且只能定义一次。(传值调用规则同样适用,如下图)

九、extern

函数在使用外部变量之前,必须要知道外部变量的名字。
要达到这一目的:
  • extern
  • 外部变量与调用该变量的函数在同一个文件中,且外部变量的定义在函数定义之前。

使用书籍:C程序设计语言(第二版) BRAIN W. KERNIGHAN  机械工业出版社
0 0
原创粉丝点击