《c和指针》读书笔记

《C和指针》读书笔记(1) (来源于尚观科技讲师文献)
2006-10-03

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和指针》读书笔记(2)

2006-10-03

1.未初始化的指针--严重错误,注意!
e.g:
        int *a;

        *a = 1;//我们并不知道指针变量a指向哪里!
        *越界指针和指向未知值的指针是常见错误的根源!
 

2.把一个整形常量强制转换,来创建指针常量;
e.g:
        int *a;

        ptr = (int *)1;

4.if pointer point to same array,pointer variable could use 加减,比较运算符,来判断它们在数组中的相对位置。
 

5.注意不能向函数传递一个NULL指针,没有任何意义。 向函数传递指针就是为了解决函数只能return一个值的问题,而且还是单向的值传递。 用指针就可以让函数返回二个以上的值,实质就是在子函数的堆栈中对主调用函数中变量地址中的值回改。

转载于:https://www.cnblogs.com/God-boy1/articles/3703067.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值