《C Primer Plus(第6版)中文版》读书笔记

说在开头:这是我学习C语言过程中的读书笔记,内容不全,会边学习边补充。如果文中有说法错误的地方,欢迎大佬指正~

良好的编程习惯:

1.变量命名时有使用有意义的变量名或标识符,如果变量名无法清楚地表达自身的用途,可以在注释中进一步说明

2.把所有的变量声明放在一块,方便读者查找和理解程序的用途

3.在函数中用空行分隔概念上的多个部分

4.每条语句各占一行

5.程序开始处添加一条注释,给出程序目的,方便以后阅读和理解

6.无论main()在程序文件处于什么位置,所有的C程序都是从main()开始执行,但是C的惯例是把main()放在开头,因为它提供了程序的基本框架

7.预处理:#define NAME value (中间没有等号,末尾没有分号)
用大写表示符号常量是C语言的传统,在程序中看到全大写的名称就立刻明白过来这是一个符号常量,而非变量。

8.在函数原型和函数定义中,如果需要传参,则在括号内写上参数类型。
void pond(int n) //表明该函数接受一个int类型的参数。

第1章 初始C语言

1.C语言的特点:

  • 1.C语言具有通常是汇编语言才具有的微调控制能力,可以根据具体情况微调程序,以获得最大运行速度或最有效地使用内存。 (汇编语言是为特殊的中央处理单元设计的一系列内部指令,使用助记符来表示;不同的CPU系列使用不同的汇编语言。)
  • 2.C是可移植语言,在一种系统中编写的C程序稍作修改或不修改,就能在其他系统运行。
  • 3.C语言是面向程序员语言,是为了满足程序员的需求而设计的,程序员利用C可以访问硬件、操控内存中的位。

2.使用C语言的七个步骤:

  • 1.定义程序的目标
  • 2.设计程序
  • 3.编写代码
  • 4.编译
  • 5.运行程序
  • 6.测试和调试程序
  • 7.维护和修改程序

3.编程机制:

  • 1.文件名=基本名+扩展名
  • 2.源代码(.c)—编译器–→目标代码(.obj,也就是机器语言代码)—链接器(目标代码+库代码+启动代码)–→可执行代码(.exe)

第2章 C语言概述

1.使用printf()函数,必须包含stdio.h头文件

2.C程序一定是从main()函数开始执行

3.int num; 叫做声明,所有变量都必须先声明才能使用

4.可以用字母、数字、下划线来命名,但第一个字符不能为数字

5.调用函数时,函数一般出现三次:

  • (1)函数原型:告知编译器在程序中要使用该函数
  • (2)函数调用:在main()中调用
  • (3)函数定义:函数本身的源代码
#include
void butler();   //函数原型 
int main(void)
{
	printf("I will summon the butler function.\n");
	butler();   //函数调用
	printf("Yes.Bring me some tea and writeable DVDs.\n");
	
	return 0; 
 } 
 
void butler()   //函数定义 
{
	printf("You rang,sir?\n");
}

6.程序的错误叫bug,找出并修正错误叫debug。

  • 可以插入printf()来监视变量值的变化,程序运行正确后便可删除额外的printf()。

第3章 数据和C

1.位(bit),字节(byte),1字节=8位

2.十进制%d,八进制%o,十六进制%x(要显示前缀0、0x、0X,则用%#o、%#x、%#X)

3.%f用来处理浮点数,%5.2f表示字符宽度5字符,其中的.2用于精确控制输出,只显示小数点的后两位。

4.不要在浮点型常量中间加空格:1.56E+12 .8e-5

第4章 字符串和格式化输入输出

1.调用strlen()(获取字符的长度)等函数时,要写#include

2.用数组存储字符串

int main(void)
{
    char name[40];  
    scanf("%s",name);   
    printf("%s",name);    
}
  • //定义char型数组是因为字符串中的每一个元素的类型都是char型,如果是“12345”,则是int str[6]。
  • 声明时数组长度不能为空。
  • //name前面没加&是因为name就是地址,而int a;&a才能表示地址。
  • //输入和输出用%s是因为整个字符串的输入输出,如果用%c则是逐个字符的输入输出。

3.3.字符串:双引号 字符:单引号
char name[5]={“Lucy”}; 等价于 char ch[5]={‘L’,‘u’,‘c’,‘y’,’\0’};

4.strlen是函数,sizeof是运算符
strlen测的是字符串的实际长度,而sizeof测的是分配空间的大小。

char str[20]={"hello"};
printf("strlen:%d\n",strlen(str));
printf("sizeof:%d\n",sizeof(str));

//运行结果:
strlen:5
sizeof:20

5.sanf()读入基本变量类型的值,在变量名前加&;把字符串读入数组中,不需要&。

第5章 运算符、表达式和语句

1.花括号以及被划括号括起来的部分称为块(block)。

2.指数运算可以使用pow()函数,例:pow(3.5,2.2)返回3.5的2.2次幂。

  • 注意,这种情况下需调用头文件。参数类型为double型。

3.形参是变量,实参是函数调用提供的值,实参被赋给相应的形参。

  • pond(int n):形参是int类型的变量n;
  • pond(10):实参10,通过调用函数把实参10传递给形参n。

第6章 C控制语句:循环

1.while循环

while (循环条件)
{
    循环语句
}

2.for循环

for (初始化;测试条件;执行更新)
{
    循环语句
}

3.do while循环

do
{
    循环语句
}while(循环条件)

第7章 C控制语句:分支和跳转

1.这里的循环条件是利用scanf的返回值。scanf()读到数字时会返回1;读到非数字字符时会返回0。

while (scanf(“%f”,&temperature) == 1)
{
	循环语句
}

2.if、else三种形式;

 - (1)if (循环条件)
{
	循环语句
}

 - (2)if (循环条件)
{
	循环语句1
}
else
{
	循环语句2
}

 - (3)if (循环条件)
{
	循环语句1
}
else if (循环条件2)
{
	循环语句2
}
else
{
	循环语句3
}

3.getchar()和putchar()

 - getchar(ch);   等价于   scanf(“$c”,&ch);
 - putchar(ch);   等价于   printf(“$c”,ch);

4.条件运算符:?:

表达式1 ? 表达式2 : 表达式3   //如果表达式1为真,则执行表达式2;否则,执行表达式3。

5.循环辅助:continue和break

  • (1)continue:执行到该语句时,会跳过本次迭代的剩余部分,并开始下一轮的迭代。
    (重复执行程序中的循环,直到满足某条件为止,称为迭代。) 如果continue语句在嵌套循环内,则只会影响包含该语句的内层循环。
  • (2)break:跳出循环,向下执行。
    《C Primer Plus(第6版)中文版》读书笔记_第1张图片
    6.多重选择:switch
switch (整型或char型表达式)
{
	case 值1:
		语句1;
		break;
	case 值2:
		语句2;
		break;
	case 值3:
	case 值4:   //多重case标签
		语句3;
		break;
	default:
		break;
}

你可能感兴趣的:(C语言)