第一章初始c语言
c缺点:c指针编程
c运用大量运算符,
IOCCCthe International Obfuscated C Code Contest
第二章C语言概述
2.4提高程序可读性的技巧
选择有意义的函数名和写注释
在函数中用空行分隔概念上的多个部分
每条语句各占一行
2.8关键字和保留标识符
auto extern short while break float signed _Alignas case for sizeof _Alignof char goto static _Atomic const if struct _Bool
continue iniline switch _Complex default int typedef _Generic do long union _Imaginary double register unsigned _Noreturn else restrict vodi _Static_assert enum return volatile _Thread_local
第三章数据和c
第四章字符串和格式化输入输出
4.2 char name[40]; 为字符串创建数组
scanf("%s",name);scanf在遇到第1个空白(空格、制表符或换行符)时就不再读取输入。字符数组不用地址
strlen(name);结果不包含最后的\0
sizeof(name);结果是40,返回size_t类型的值,是一个无符号整数类型,
4.4转换说明
%a %A %c %d %e %E %f %g %G %i %o %p %s %u %x %X %%
第五章运算符、表达式和语句
运算符优先级
11/5 得2,11%5=1
11/-5得-2,11%-2=1
-11/-5得2,-11%-5=-1
-11/5得-2,-11%5=-1
a_post=a++;使用a的值后,递增a
b_post=++b;使用b的值之前,递增b
while()
{}
for(;;)
{}
do
statement
while(expression);
第六章c控制语句:循环
if
else if
else
第七章c控制语句:分支和跳转
getchar()
putchar()
7.5条件运算符
expression1 ? expression2 :expression3
continue
break
switch(ch)
{
case 'a':
printf("argali");
break;
case 'b':
printf("babirusa");
break;
default:
printf("fisher");
}
第八章字符输入输出和输入验证
递归的基本原理:每次函数调用都会返回一次,当函数执行完毕后,控制权将被传回到上一级递归。
尾递归把递归调用置于函数的末尾,正好在return语句之前,
第九章函数
*间接运算符,
ptr=&poch,把poch的地址赋给ptr
var=*ptr,找出ptr指向的值
double duff(double,int);//函数原型
int main(void)
{
doouble q,x;
int n;
....
q=duff(x,n);//函数调用
....
}
double duff(double u,int k) //函数定义
{
double tor;
...
return tor; //返回double类型的值
}
第十章数值和指针
防止数组下标超出边界;
指定数组的大小
a1[5*2+1]可以
a1[sizeof(int)+1]可以
a1[-4]不可以
a1[0]不可以
a1[2.5]不可以
初始化二维数组
指针加1,指针的值递增它所指向对象的值。
datas+2==&dates[2]
*(dates+2)==dates[2]
*dates+2 //第一个元素的值加2
*(dates+2)//dates第三个元素的值