1.运算符优先级,这个我是肯定记不住,每次遇到的时候都纠结下,然后去查下,或者直接括号,但是括号太多,你懂得,要用notepad才能理清各种层次。这里啦个下来,留着参考。

另外小测试下++p++,这个为什么错误???(参考左值),这些*p++就没什么好说的了,你猜是取*p还是*(p++),这个按优先级肯定是后面的,那么为什么我要问*p,自己写个小测试玩玩就好了。尼玛的,vs被卸载,devcpp本来想找来装的,找了半天没找到,开虚拟机,上linux

#include<stdlib.h>
#include<stdio.h>void main()
{printf("into main\n");char *p = NULL;char a[5] = "1234";p = a;printf("p  %s\n", p);printf("a  %s\n", a);printf("p  %p\n", p);printf("a addr  %p\n", &a);printf("p  %c\n",*p++);}

[lc_posp@localhost bin]$ ./ctest
into main
p  1234
a  1234
p  0xbfe32dc7
a addr  0xbfe32dc7
p  1

2.函数调用部分。

相信这个f();大家都知道,那么这个f;呢,反正我以前是不知道。f表示函数的地址。

3.数组与指针部分。

 int *p;int a[3] = {1, 2, 3};

p = &a;//这语句为什么错误?反正我以前是没有考虑过,p是一个指向int的指针,而&a是一个地址,某种意义上来说可以看作一个指针,他的类型是指向一个int型数组的指针,这样赋值,类型肯定不匹配。。。

二维数组与指针数组,数组指针,及其混用,这些好像不易混淆,没甚好讲的。指针数组就是一个数组,数据元素都是地址,数组指针,是一个指针,指向一个数组,类型看定义吧。强调下二维数组及其混用吧。

int a[3][4];

int *aa[4];

我的理解比较笨,就是脑袋想了下3*4的矩阵,第一个就解决了。

第二个一个指针,指向含有4个元素的数据的数组。

不好画图,画图或者想一下基本下次就不会错了。

4.关于内存申请与释放,malloc与free,这个没什么好说的,但是提示一点malloc的时候,如果精确长度时,要注意多加一,用来存放\0.

5.指针的复制q = p,这个也没什么好说的,就是copy下变量的内容,但是存变量的地址肯定不一样的&q != &p。说的都是废话。。。

6.申明与定义。

这个static,此文件内作用。我忘记了,好2222222222222.。。。。。。。。。

遇到的问题基本都是全局变量,加extren的那种.

7.关于除法与位移

除法的效率很低,是2的倍数尽量用>>  和 <<

int t = 4;

int div2 = 4>>1; //2

int chen2 = 4<<2;//8

8.不定参数问题,这个我有点不想讲,不是太简单,是我看过了,记不住。2货。

用途我就看到在打印日志里遇到过,其他好像没什么地方.

void va_start(va_list ap, last);
type va_arg(va_list ap, type);
void va_end(va_list ap);

  假设lastarg是func的最后一个具名参数,即在func函数定义中...之前的那个参数(在printf中lastarg是format),在func中首先定义一个变量:

va_list ap

  这个变量以后会依次指向各个可变参数。ap在使用之前必须用宏va_start初始化一次,如下所示:

va_start(ap, lastarg);

其中lastarg是func中的最后一个具名参数。然后就可以用va_arg来获得下一个不定参数(前提是知道这个不定参数的类型type):

type next = va_arg(ap, type)

  最后就是用宏va_end来清理现场。

 

转载于:https://www.cnblogs.com/ashen/p/5648309.html

c traps and pitfalls reading notes(2)相关推荐

  1. RRAM/ Near Memory Computing (NMC) Survey - Reading Notes 0707

    Reading Notes of Resistive Random Access Memory – Day 2 Chapter 3 RRAM Characterization and Modeling ...

  2. Code Style Guidelines for Contributors Reading Notes

    Reading Notes: 1.You must handle every Exception in your code in some principled way. (if you are co ...

  3. 《深度学习之TensorFlow》reading notes(3)—— MNIST手写数字识别之二

    文章目录 模型保存 模型读取 测试模型 搭建测试模型 使用模型 模型可视化 本文是在上一篇文章 <深度学习之TensorFlow>reading notes(2)-- MNIST手写数字识 ...

  4. C陷阱和缺陷(C Traps and Pitfalls)-读书笔记

    C Traps and Pitfalls Chap 01 词法陷阱 1.=是赋值运算符,==表示相等判断. 2.&.|是位运算符号,&&.||是逻辑运算符. 3.词法分析的贪心 ...

  5. Interviewing at Amazon — Leadership Principles Reading Notes

    Reference: Interviewing at Amazon - Leadership Principles 这里面有好多大义凛然的话我们可以去说.基本上句句经典. In summary, wh ...

  6. 「MICCAI 2017」Reading Notes

    Sina Weibo:东莞小锋子Sexyphone Tencent E-mail:403568338@qq.com http://blog.csdn.net/dgyuanshaofeng/articl ...

  7. Academic English Reading Notes

    trade secret: 商业机密 profit margin 净利率 leverage 杠杆作用 alignment 对准 结盟 校准 deploy 部署 break even 收支平衡 NPV: ...

  8. Metaphors for a richer understanding of software development -- Code complete reading notes(2)

    隐喻是什么? 人们常常利用隐喻来利用了解的事物理解不了解的事物,如,我们在用鸡蛋来理解地球的结构,认为它由地壳(蛋壳),地幔(蛋白),地心(蛋黄)组成. 在软件开发中,隐喻是一种启发,而不是一种算法. ...

  9. Defensive programming -- Code complete reading notes(8)

    子程序不应该因传入错误的数据而被破坏,哪怕是由其它子程序产生的错误数据. 1.检查所有来源于外部的数据 2.检查子程序所有输入参数的值 3.决定如何处理错误的输入数据 使用断言 1.用错误处理代码来处 ...

  10. 【设计模式之美】<Reading Notes>贫血模型与充血模型

    小知识 需要了解的一些名词 1.领域驱动设计(Domain Driven Design,简称 DDD) 2.MVC 三层架构 : M 表示 Model,V 表示 View,C 表示 Controlle ...

最新文章

  1. CVPR 2021 | 自适应激活函数ACON: 统一ReLU和Swish的新范式
  2. OVS vswitchd启动(三十九)
  3. 基于光线追踪的渲染中景深(Depth of field)效果的实现
  4. php接收不到post数据_PHP解决Vue发起POST请求,接收不到数据
  5. mysql插入二进制命令_MySQL将语句写入到binlog二进制日志中
  6. u盘当启动盘(多种方法)
  7. linux怎么进入windows系统安装目录下,windows下Linux子系统的安装配置
  8. Deciding the Number of Clusterings
  9. webstorm 破解
  10. coreldraw x4怎么会蓝屏_电脑蓝屏怎么办 七种方案轻松搞定【图文】
  11. 无法启动计算机上的服务msdtc,MSDTC服务无法启动,导致网站打不开
  12. 中国海蜇产业发展现状及建议分析,辽宁省是我国最主要的养殖产地「图」
  13. Spring微服务实战第1章 欢迎迈入云世界,Spring
  14. Re:从零开始的DS生活 轻松从0基础实现多种队列
  15. 不等距双杆模型_电磁感应之双杆模型.ppt
  16. python怎么表示不等于_Python关系运算符中表示“不等于”的是哪个?________
  17. 基于verilog实现的VGA
  18. JavaScript学习第十三天
  19. 随机生成6位数字,且6个数字不重复
  20. Unity在OpenGL模式下Shader编译报错

热门文章

  1. Javascript模块化编程(二)AMD规范(规范使用模块)
  2. [转载]《博客园精华集》WebService筛选结果(共79篇)
  3. ping IP简单应用,查找故障
  4. 不得罪人 VS 不怕得罪人
  5. U-he The Dark Zebra for Mac(预设合成器)
  6. 如何配置Mac OS X实现LAN唤醒?
  7. 分布式缓存的面试题2
  8. Duplicate spring bean id
  9. Spring(16)——使用注解进行bean定义
  10. maven学习二(dependencies)