《C和指针》读书笔记(1)
来源:互联网 发布:海量数据 待遇 编辑:程序博客网 时间:2024/05/21 12:45
1.scanf()的返回值是函数成功转换并存储于参数中值的个数!
2./*scanf 不会读取该行中最后一个它不需要读取的值--换行符'/n'
,所以该行中的剩余部分就会留在那里等待被读取。这个换行符或者其他scanf不想读取的字符就会被解释成下一行的开始数据。所以用下面这种方法来读取并丢弃这些剩余字符。
*/
int ch; /*EOF在stdio.h中定义为int,所以为了防止ch = EOF将int强转为char,
也将ch声明成int型*/
while((ch = getchar()) != EOF && ch != '/n'){
;
}
3.注意事项:避免越界访问数组
*在使用下标前先检查它们的值;(如果下标是由在键盘由用户输入的,要加上后面code)
int array[] = {0,1,2};
scanf("%d", &i);
if(i < sizeof(array)){
array[i]; //这样再引用以i为下标的数组;
}
*在while or if 表达式中蕴含的赋值操作;(在fork一个进程时要小心用这种技巧,不要 偷懒,在while of if 前就先将fork的返回值赋值操作。)
*始终要进行检查,确保数组不越界;
4.strlen()的个数不包含'/0'
5.可以把字符串常量赋给一个指向字符的指针,这个指针指向这些字符所存储的地址。
但是,你不能把字符串常量赋给一个字符数组,因为字符串常量的直接值是一个指针,而不是字符本身。
strcpy(char *des_ptr, const char *src_ptr) //段错误,对指针变量赋了一个字符,而不是一个地址(指针变量)。 des_ptr = src_ptr; //right,但是只是在内存中只有一段字符串,只是二个指针都指向了这个字符串常量,不是在内存中的一个新的地址空间复制了一段src_ptr的字符串。
strcpy(char des_ptr[], const char *src_ptr)
/***********************************/
src_ptr = strchr(src_ptr, 'a');
strcpy(char des_ptr[], const char *src_ptr); //ok!
6.修饰符,作用域
*不要在嵌套的代码块中出现相同的变量名!
7.避免将函数的型参和函数的局部变量重名!
- 《C和指针》读书笔记(1)
- 《C和指针》读书笔记(1)
- C和指针读书笔记 -1
- 《C和指针》读书笔记1
- <C和指针----读书笔记1>
- 读书笔记:C和指针1
- 《C和指针》 读书笔记
- 《C和指针》读书笔记
- 《C和指针》读书笔记
- 读书笔记---C和指针
- C和指针读书笔记
- C和指针 读书笔记
- C和指针 - 读书笔记
- 《C和指针》读书笔记
- 《C和指针》读书笔记
- 读书笔记 C和指针
- 《C和指针》读书笔记
- 《C和指针》-读书笔记
- 哩个老师好变态 - _ - !...
- 广东话歇后语
- DevExpress公司的xtraGrid控件
- 现在决定了。搬家到csdn了。
- 该内存不能为read或written的解决方案
- 《C和指针》读书笔记(1)
- Foxit Reader for Linux
- 《C和指针》读书笔记(2)
- 第一篇文章
- 嵌入式BootLoader技术内幕
- C#趣味小程序(6)——动态工具栏
- 板子上的调试--点灯大法
- 一句话的人生
- ospf为什么要划分区域?