第一章节
在c语言中,数组参数是以引用(reference)形式进行传递的,也就是地址调用,而标量和常量是按值(value)传递的。
字符串由双引号括起来,每个字符串都由NLI(类似符号\0)做结尾,故"hello"占6个字节。
printf格式与含义:
%d 十进制整数
%o 八进制
%x 十六进制
%g 一个浮点值
%c 一个字符
%s 一个字符串
scanf所有标量参数前必须加上一个&符号,但数组参数前不加,但如果数组参数中如果出现了下标引用,也就是说实际参数是数组的某个特定元素,那么要加&。例:scanf("%d",&columns[num]);
在函数声明的数组参数中,并未指定数组长度,可接受无论多长的字符串。
for循环第一部分在循环开始前执行一次,第二部分在循环每执行一次后执行一次,第三部分在每次循环执行后执行一次。
getchar();
scanf()在读取输入时会在缓冲区留下一个字符 \n(因为我们输入时以回车键为结束导致),所以在连续输入字符串时需要getchar()清除\n;
getchar()在输入缓冲区按顺序读入一个字符(包括空格,回车和tab);
getchar()一般不返回负值,除了EOF
putchar();
strcpy();把右边的字符串赋值给左边;
strcat()函数接收两个参数,把第二个字符串添加到第一个字符串末尾;
strchr()在字符串内进行搜索,第一个参数是字符串,第二个参数是一个字符,成功就返回一个指向这个位置的指针,失败返回NULL,strstr()与之相似,但第二个参数是字符串。
第二章节
c的两种环境:
翻译环境:将代码转换为可执行的机器指令;
执行环境:执行代码。
交叉编译器:在一台机器(宿主机)上运行,但它所产生的可执行代码可运行于其他机器(目标机)上;
独立环境:不存在操作系统的环境。
三字母词:注意程序中的??_,当一个字符连续出现使有可能会有歧义,可在字符串前加个\避免这类错。
标识符:是变量,函数,类型等的名字,由大小写字母,数字和下划线组成,但不能以数字开头,不能与关键字重复。
第三章节
数据有4种基本数据类型:整型,浮点型,指针,聚合类型(数组与结构)
各类型数据所占位数大小:
long型数据不短于int型,short型不长于int型,这个由计算机决定。
如果显明地将变量声明为signed或unsigned,可提高程序移植性,解决不同机器中字符是否有符号这一问题,但也可能影响效率。
字面值:const变量,声明后初始化后值无法改变。
??枚举:
enum Tar_type {cup,pint,quart,gallon};
类似于结构体?
浮点数:至少能容纳从10^-37~10^37之间的任何值,默认double型,L/l为long double 型,F/f 为float型。
作用域
四种作用域:
文件作用域,函数作用域,代码块作用域(一对花括号之间),原型作用域
形参的作用域是整个函数体;
文件作用域:在所有代码之外声明的标识符都具有文件作用域,例:想要使用之后创建的函数可以提前声明;
??原型作用域:防止这些参数与程序其他部分名字冲突。
链接属性:external(外部),internal(内部),none(无)
没有链接属性的标识符none总是被当做单独的个体,意味着每个实体都是不同的;
属于internal链接属性的标识符在同一个源文件中的所有声明都指向同一个实体;
属于external的无论声明多少次,位于几个源文件都表示同一个实体。
存储类型:
缺省的是自动的,存于堆栈中;
static静态的;
register 寄存器变量。
for循环中break用于跳出循环,continue用于跳过本次循环进行下次循环。