c专家编程 读书笔记
c诡异离奇,缺陷重重,却获得了巨大的成功
编译器设计者的金科玉律:效率=一切
c预处理器:1.字符串替换 2.头文件包含 3.通用代码模板的扩展
预处理一定要使用强制类型转换!!!明确数据类型
每一个ANSI C编译器必须能够支持:
@在函数定义中形参数量的上限至少可以达到31个。
@在函数调用时实参数量的上限至少可以达到31个。
@在一个源代码行里至少可以有509个字符
@在表达式中至少可以支持32层嵌套的括号
@long int的最大值不得小于2147483647(不得低于32位)
标准设立后轻易不作变动,即使是修改错误
const和*的组合通常只用于在数组形式的参数中模拟传值调用。他声称“我给你一个指向他的指针,但你不能修改它”,这个约定类似于极为常见的void*用法,尽管在理论上他可以用于任何情形,但通常被限制于把指针从一种类型装换到另一种类型。
const int limit = 10;
const int *lp = &limit;
lp是一个指向常量整型的指针。这个指针不能用于修改这个×××数,但在任何时候,这个指针本身的值却可以改变。这样,它指向了不同的地址,对它进行解除引用操作会得到一个不同的值。
安静的改变
1.算数转换 2。字符和整型(×××升级)3.寻常算数转换
(无符号保留原则)当一个无符号类型与int或更小的整型混合使用时,结果类型是无符号类型。 对应的就是(值保留原则(可能是有符号数,可能是无符号数,取决于操作数的类型的相对的大小))
尽量不用无符号数!!!
sizeof返回unsigned int
只有在使用位段和二进制掩码时,才可以使用无符号数。可以使用强制类型转换
一个L的NUL用于结束一个ASCII码零的正确术语。
两个L的NULL用于表示什么也不指向(空指针)。
i = 1, 2;
因为=运算符高于,所以(i=1)后,i被赋值为1, 2这个运算无意义,最终i = 1
Shell参数解析:
要找出目录中的哪些文件时链接文件:ls -l | grep link
maximal munch strategy(最大一口策略)
函数中,不能把局部变量的指针,作为返回值。
解决办法:
@返回一个指向字符串常量的指针(只适用于简单的字符串)
char* func(){reutrn "wahaha!";}
@使用全局声明的数组
@使用静态数组(和全局数组一样,大型缓冲区若果闲置不用,非常浪费内存空间)
@显式分配一些内存,保存返回的值
char * func(){
char *s = malloc(20);
return s;
}
它应用于多线程的代码。缺点在于程序员必须承担内存管理的责任
@最好由调用者分配内存来保存函数的返回值。
void func(char* result, int size){
}
转载于:https://blog.51cto.com/no001/560673
c专家编程 读书笔记相关推荐
- C专家编程-读书笔记(书本顺序)
C语言设计哲学: 一切工作程序员自己负责. 语言中的所有特性都不需要隐式的运行时支持. 程序员所做的都是对的. 程序员应该知道自己在干什么,并保证自己的所作所为是正确的. ====== ...
- C专家编程 读书笔记
在ANSI C中,如果要声明空参数表,则必须使用关键字void进行显式声明: CPU,16位地址总线,能够访问2^16也就是64KB的内存:20位地址总线,可以访问2^20也就是1MB的内存:32位地 ...
- C专家编程--读书笔记九 再论数组
第九章 一.知识点 1.所有作为函数参数的数组名总是可以通过编译器转换成指针. 然而,数组和指针在编译器处理时是不同的,在运行时的表示形式也是不一样的,并可能产生不同的代码.对编译器而言,一个数组就是 ...
- C专家编程--读书笔记十 再论指针
第十章 一.知识点 1.C标准规定%s说明符的参数必须是一个指向字符数组的指针.所以如: char *p = NULL; printf("%s", p); 这是不正确的.NULL是 ...
- C专家编程--读书笔记六 运行时数据结构
第六章 一.知识点 1.代码和数据的区别也可以认为是编译时和运行时的分界线.编译器的绝大部分工作都跟翻译代码有关:必要的数据存储管理的绝大部分都在运行时进行.(P121) 2."a.out& ...
- C专家编程读书笔记一:C语言晦涩难懂的声明
理解C语言声明的优先级规则: 声明从它的名字开始读取,然后按照优先级顺序依次读取 优先级从高到低依次是: B1 声明中被括号括起来的那部分 B2 后缀操作符:括号()表示是一个函数,二 ...
- 《程序员修炼之道–从小工到专家》读书笔记
<程序员修炼之道–从小工到专家>的读书笔记 <程序员修炼之道–从小工到专家>[美]Andrew Hunt / David Thomas 著 马维达 译 看这本书主要使用了检视阅 ...
- UNIX网络编程--读书笔记
会集中这段时间写UNIX网络编程这本书的读书笔记,准备读三本,这一系类的文章会不断更新,一直会持续一个月多,每篇的前半部分是书中讲述的内容,每篇文章的后半部分是自己的心得体会,文章中的红色内容是很重要 ...
- mozart-oz中有限域编程读书笔记
mozart-oz自带文档: <Finite Domain Constraint Programming in Oz. A Tutorial.>读书笔记 http://www.mozart ...
最新文章
- Centos6.3下apache+svn部署web版本同步
- 我的360破解考题答案
- 微软称电脑系统识别能力已经超越了人类
- PMcaff杂谈社第一期:红包那些事儿
- java对象复制到另一个对象中_spring: beanutils.copyproperties将一个对象的数据塞入到另一个对象中(合并对象)...
- adb logcat 查看日志
- 从pg_hba.conf文件谈谈postgresql的连接认证
- 外设驱动库开发笔记21:BME680环境传感器驱动
- MIT操作系统神课 - 6.828
- snmpwalk访问华为防火墙snmp服务超时失败问题
- MicrosoftStore无法下载软件
- java游戏猿人时代_猿人时代_JAVA游戏免费版下载_7723手机游戏[www.7723.cn]
- 山寨手机拇指30掌盟APP软件游戏下载安装破解激活图文教程2
- 路网自动构建路段拓扑
- git bash粘贴快捷键
- emlog模板 Meta主题带后台开源版 资源娱乐网模板
- uniapp抽奖组件-动画效果之各类抽奖(跳跃)
- 适当的放松也是一种幸事
- 管理罗盘-管理者角色认知与定位
- 2021-11-16日完成任务:中医体质辨识设计与实现
热门文章
- virtualbox linux通用网卡,详解VirtualBox + CentOS 虚拟机网卡配置
- Java实现学生管理系统(完整代码)
- shell 清楚空格_Cygwin系列(五):Shell命令行初体验
- mysql pdo 读取字段名_PDO如何处理SQL语句中对字段名以及表名的转义
- C++ 中 freopen()函数的用法
- React 使用browserHistory项目访问404问题
- Servlet是否单例?
- Android studio报Error:(26, 13)-v7:27.错误的解决方法
- PMI、砺志咨询活动:项目经理软技能征文大赛—15个PDU、免费软技能培训
- MVP 模式实例解析(转)