C专家编程
【C专家编程】
1、如果写了这样一条语句: if(3=i)。那么编程器会发出“attempted assignment to literal(试图向常数赋值)”的错误信息。
所以将常量放置在==前央,可以避免写成赋值语句。
2、空格会对扩展的结果造成很大的影响。
#define a(y) a_expanded(y) a(x) 会被扩展为:a_expanded(x)
而#define a (y) a_expanded (y) a(x) 会被扩展为: (y) a_expanded (y)(x)
3、函数声明中可以省略形参名,如:
char *strcpy(char *, const char *);
但不建议省略,国灰形参名起到了一个注释的作用。
char *strcpy(char *dst,const char* src)。
4、以下代码是合法的。
char *cp;
const char *ccp;
ccp = cp;
cp指向一个char,ccp指向一个const char,两个指针指向类型相同,只是限定符不同。
但以下代码是非法的。
char **cp;
const char **ccp;
ccp = cp。
因为上述中,cp是指向char*的指针,而ccp是指向const char *的指针。两个指针指向的类型不同。
5、在一个符号前加上const限定符只是表示这个符号不以被赋值。也就是它的值对于这个符号来说是只读的。
6、malloc(strlen(str))几乎可以断定它是错误的,而malloc(strlen(str)+1)才是正确的。因为字符串末尾有一个'\0'。
7、一串相邻的字符串,在编译时会被自动合并 。
print("Hello"
"World")。
8、缺省情况下,函数的名字是全局可见的。
extern function pear() // 在任何地方均 可见
static function turnip() // 在这个文件之外不可见
9、[]和()的优先级高于*。
int *ap[] // ap是个元素为int指针的数组
int *fp() // fp是个函数,返回int*
10、下述代码。当用户的输入超过了512个字符时,gets()函数会继续把多出来的字符压到堆栈中。
main(argc, argv)
{
char line[];
gets(line)
}
应该用fgets替换gets。
fgets(line, sizeof(line), stdin)
11、下述代码中,buffer是一个自动分配内存的数组,是该函数的局部变量。return之后,buffer的栈空间被回收,导致指针无效。
char * func()
{
char buffer[];
return buffer;
}
12、优化级。
1)括号括起来的部分。
2)后缀操作符,如()、[]。
3)前缀操作符,如*。
13、chalk是一个指向int的指针,chese则是一个int。
int *chalk,cheese;
C专家编程的更多相关文章
- C专家编程阅读笔记
周末闲来无事,(哗),好久之前买的C专家编程一直没看,翻起来看了一下 尽量不使用unsigned 尽量不要在代码中使用unsigned,尤其是一些看起来是无符号类型的数字,比如年龄等,因为难免要使用u ...
- c专家编程摘录
C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...
- <<c专家编程>>笔记
C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...
- 《C专家编程》数组和指针并不同--多维数组
<C专家编程>数组和指针并不同 标签(空格分隔): 程序设计论著笔记 1. 背景理解 1.1 区分定义与声明 p83 声明相当于普通声明:它所说明的并不是自身,而是描写叙述其它地方创建的对 ...
- C语言学习书籍推荐《C专家编程Expert C Programming Deep C Secrets》下载
Peter Van Der Linden (作者) <C和C++经典著作 C专家编程Expert C Programming Deep C Secrets>展示了C程序员所使用的编码技巧, ...
- C专家编程cdecl
理解所有分析过程的代码段 Page71(中文版) 你可以轻松地编写一个能够分析C语言的声明并把他们翻译成通俗语言的程序.事实上,为什么不?C语言声明的基本形式已经描述清楚.我们所需要的只是编写一段能够 ...
- c专家编程读书笔记
无论在什么时候,如果遇到malloc(strlen(str));,几乎可以直接断定他是错误的,而malloc(strlen(str)+1):才是正确的: 一个L的NUL哟关于结束一个ACSII字符串: ...
- 《C专家编程》第四章——令人震惊的事实:数组和指针并不相同
数组和指针是C语言里相当重要的两部分内容,也是新手程序员最容易搞混的两个地方,本章我们锁定指针与数组,探讨它们的异同点. 首先来看指针与数组在声明上的区别: int a[10]; int *p; 很明 ...
- 《C专家编程》第三章——分析C语言的声明
前面一章我们已经说过C语言存在的一些问题和它晦涩的地方,让我们对这门神奇的语言有了更深的了解.现在这一章则集中精力来讨论C语言的声明,分为三块,首先是说明C语言声明晦涩难懂的原因和声明是如何形成的,其 ...
随机推荐
- 【Tomcat】Tomcat安装及Eclipse配置教程
==================================================================================================== ...
- gentoo openrc 开机打印信息
gentoo openrc 开机的时候,最开始 一些硬件的信息, 后面是一些内核和驱动的信息. 硬件的信息是默认保存到 /var/log/dmesg 中, 可以使用 dmesg | less 来查看硬 ...
- RMI non-JRMP server at remote endpoint
又是一个jmx问题 jmx明明端口占用了, 而且相关java进程也起来了, 为什么会不能通过jconsole访问jmx呢?总是:RMI non-JRMP server at remote endpoi ...
- Windows系统不同磁盘间的扩容教程
1.windows系统不同磁盘的空间扩展: https://www.cnblogs.com/yunweis/p/8023098.html
- linux crontab 保证php守护进程运行
写好php脚本.建议定期检测内存占用,核心逻辑就不写了.这个跟业务有关. if(memory_get_usage()>100*1024*1024){ exit(0);//大于100M内存退出程序 ...
- 深度学习原理与框架-神经网络结构与原理 1.得分函数 2.SVM损失函数 3.正则化惩罚项 4.softmax交叉熵损失函数 5. 最优化问题(前向传播) 6.batch_size(批量更新权重参数) 7.反向传播
神经网络由各个部分组成 1.得分函数:在进行输出时,对于每一个类别都会输入一个得分值,使用这些得分值可以用来构造出每一个类别的概率值,也可以使用softmax构造类别的概率值,从而构造出loss值, ...
- 列表(list) 的 基本操作
举例说明:names = ["zhangyang", "guyun", 'xiangpeng', ['alex','jack'], "xuliangc ...
- leetcode题解 candy
要求的条件是: 1.每个人最少一个糖果. 2.相邻的小朋友,要保证,评分高的比评分低的糖果多. 如果从一侧扫描的话,容易确定的就是递增序列,只要上升1个就够了. 容易出现问题的就是:遇到下降期,或者相 ...
- CSS VISUAL RULES
CSS VISUAL RULES Review Visual Rules Incredible work! You used CSS to alter text and images througho ...
- cxgrid中回车键光标移到下列
OptionsBehavior.GoToNextCellOnEnter:=True; 更完善的回车 可以在焦点到了最后一列再回车时有下一行则移到下一行的第一列,没有下一行则新增记录并移到第一列 pro ...