《写给大家的看的C语言书》笔记

本文分享了《写给大家的看的C语言书》的学习笔记,涵盖了从基本语法到高级特性的多个方面,例如字符串处理、随机数生成、指针操作及文件读写等内容。

最近为了学习C语言,看了一本C的入门书,即《写给大家的看的C语言书》。

这本书非常通俗易懂,全书32章,每章都很短,个人觉得很适合初学者。

下面是摘抄的一些笔记,供自己以后复习用。

============================= chapter03 ============================= 
printf不同数据类型时的格式符: 
    %c      打印字符 
    %s      打印字符串 
    %d      打印数字(整数) 
    %.2f    打印小数(.2表示打印2位小数)    
=====================================================================

============================= chapter04 ============================= 
代码中的注释应尽量口语化,且有别于代码。 
比如:(a<b)?a:b /* get the smaller of the 2 values */ 
=====================================================================

============================= chapter05 ============================= 
1. C语言中字符串末尾是“null零”,“null零”是ASCII码的第一个, 
    不是数字0,也不是字符‘0’ 
2. 字符串的长度不包括末尾的“null零” 
3. 定义字符串时要在末尾预留一个“null零”的空间(就是一个字节) 
4. 定义字符串的时候同时进行初始化操作的话,可以不必指定字符数组的长度, 
    编译器会自动计算长度,同时在最后加个“null零” 
    比如: char str[] = "abcdef" 
=====================================================================

============================= chapter09 ============================= 
每次赋值运算本身也会产生一个值 
比如: i=9 这个表达式本身本身也为9, 
    所以可以进行多重赋值, j=k=l=i=9 或 a=3*(b=2) 
=====================================================================

============================= chapter10 ============================= 
进行比较运算时,比较表达式本身的值有两种: 
    比如(9==8)的值为0,即为假 
    比如(9==9)的值为1,即为真 
=====================================================================

============================= chapter13 ============================= 
字符串长度和字符串大小是不同的概念: 
字符串长度:不包括字符串末尾的null零,通过strlen()来获取 
字符串大小:存储字符串所占字符数,包括null零,通过sizeof()获取 
=====================================================================

============================= chapter16 ============================= 
如果要在printf中输出%,需要2个%% 
比如 printf("%%"); 会输出 % 
=====================================================================

============================= chapter17 ============================= 
switch 语句可用exit(1)退出 
switch 变量用整型或字符型变量,不要用float和double 
=====================================================================

============================= chapter18 ============================= 
读取一个字符用 getchar(), 它是带缓冲的输入,直至输入Enter键,才实际写 
入变量 
getch()是不带缓冲的输入,但是在fedora16下有点问题。??? 
=====================================================================

============================= chapter19 ============================= 
gets()函数可以代替scanf()来接受字符串的输入 
gets()函数会自动将Enter转化为null零,然后将输入的字符串保存在指定变量中 
gets()函数还有个比scanf()优势的地方是,gets()函数可以接受带空格的字符串 
      scanf()函数遇到空格时相当于输入已经结束 
puts()函数会在输出的字符串末尾自动追加一个 '\n' 
=====================================================================

============================= chapter20 ============================= 
产生随机数用 rand()函数 (可以产生 0 ~ 32767 内的任意整数) 
rand()产生的随机数每次都一样, 
如果要产生真正的随机数,需要每次给与不同的种子,用 srand()函数产生种子。 
比如: srand(time); rand(); 
用当前时间作为srand()的参数,可以保证每次的种子是真正的随机 
=====================================================================

============================= chapter21 ============================= 
定义字符串时,要在末尾预留一个null零 '\0', 否则打印时可能会有问题 
比如: char a[3] = { 'a', 'b', 'c' }; 是个字符数组,但不是字符串 
       char a[4] = { 'a', 'b', 'c', '\0' }; 是字符串 
       char a[3] = "abc"; printf("%s", a); 可能会出现预期以外的字符 
       char a[4] = "abc"; char a[] = "abc";都能正常显示 
=====================================================================

============================= chapter24 ============================= 
* 不是指针变量的一部分 
定义时: * 表示变量是个指针变量。 
        比如: int *ptr; 变量名是ptr 
取值时: * 表示取出指针变量中存放的地址所指向的值。 
        比如:printf(" %d", *ptr); 表示打印ptr所指向的值 
=====================================================================

============================= chapter25 ============================= 
数组名虽然是一个指针,但是它不能被改变,所以相当于一个指针常量。 
即 数组名不能出现在赋值运算的左边。 
字符指针赋值有一点需要注意:不要让程序存储比字符指针指向的第一个字符串 
更长的字符串。 
比如: char *pname = "harry poter"; gets(pname); 
    第二句gets() 存在风险,当输入的长度比"harry poter" 长的时候 
    有可能会覆盖其他数据。 
=====================================================================

============================= chapter26 ============================= 
malloc() 函数用于分配堆内存。 
    malloc() 默认返回字符型指针,所以如果分配char型以外的堆内存,需要转型 
    比如:分配10个int型大小的堆内存空间, 
          int *ptr; 
          ptr = (int *)malloc( 10 * sizeof(int)); 
free() 函数用于释放已经分配的堆内存 
=====================================================================

============================= chapter27 ============================= 
结构体的定义必须在定义结构体变量之前 
=====================================================================

============================= chapter28 ============================= 
打开文件的方法: 
    FILE *fptr; 
    fptr = fopen(filepath, "r/w/a"); 
    fclose(fptr); 
fprintf()函数可用于写入文件, 
与printf()函数不同之处在于多了一个文件指针的参数。 
fgets()函数和gets()不同之处在于要给出输入的长度。 
还有以下2点要注意: 
1. 用于读取文件 
2. 遇到'\n'或者到达给出的长度时结束输入 
feof(fptr)用于判断文件是否读完 
=====================================================================

============================= chapter30 ============================= 
fseek()可以改变文件指针的位置,使得可以局部修改文件。 
用"r+/w+/a+"模式打开的文件可以随机访问。 
=====================================================================



本文转自wang_yb博客园博客,原文链接:http://www.cnblogs.com/wang_yb/archive/2012/07/19/2598688.html,如需转载请自行联系原作者


挺经典的一本入门C语言,图文并茂,很适合初学者和那些概念不是很清楚的编程学者,老外的,真的蛮不错的,比起国内一个超一个那些作者的好很多。强烈推荐。 写给大家看的C语言(第2版)》:没有编程基础,被C语言的术语和细节搞得晕头转向,手头的教科无数次拿起又放下、总是读不进去,甚至已经开始考虑放弃?不要灰心!《写给大家看的C语言(第2版)》将带你开始一次轻松有趣的C语言之旅,并且使你在旅途的终点自信满满地迎接憧憬无限的明天。 这是一部别开生面、与众不同的C语言经典入门著作,在全球畅销已经近20年,重印数十次。中,作者好像坐在你身边的老朋友,拉着家常,将C语言的基础知识、必备的实战技能和宝贵编程经验一一道来。没有云山雾罩,没有前因后果的行话,没有艰深而且不必要的内部技术细节,没有沉闷晦涩的长篇大论,只有生动的漫画、丰富的图示、幽默通俗的文字、细致的分析阐述、引人入胜的趣闻轶事和短小精悍的章节安排。作者不仅将重要的知识点以“线索”、“警告”、“陷阱”、“难点”、“小结”等活泼的形式呈现给读者,而且还提供了一个贯穿全的21点游戏程序,完美地将旅途上所有的景点巧妙地嵌在其中。 《写给大家看的C语言(第2版)》不仅已经成功地使无数没有编程经验的初学者包括许多十几岁的孩子掌握了C语言,也是全球许多著名高校的程序设计课程教材。 久负盛名的C语言神奇入门 来吧,现在就开始攻克C语言 从这里,爱上编程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值