当前位置:网站首页>C陷阱与缺陷 第3章 语义“陷阱” 3.4 避免“举偶法”
C陷阱与缺陷 第3章 语义“陷阱” 3.4 避免“举偶法”
2022-07-29 02:48:00 【weixin_客子光阴】
避免“举偶法”
“举偶法”(synecdoche)是一种文学修辞上的手段,有点类似于以微笑表示喜悦、赞许之情,或以隐喻表示指代物与被指代物的相互关系。在《牛津英语词典》中,对“举偶法”(synecdoche)是这样解释的:“以含义更宽泛的词语来代替含义相对狭窄的词语,或者相反;例如,以整体代表部分,或者以部分代表整体,以生物的类来代表生物的种,或者以生物的种来代表生物的类,等等。”
C语言中一个常见的“缺陷”:混淆指针与指针所指向的数据。对于字符串的情形。编程人员更是经常犯这种错误。
例如:
char *p, *q;
p = "xyz";
上面的赋值语句使得p的值是字符串"xyz",然而实际情况并不是如此,记住这一点尤其重要。实际上,p的值是一个指向有'x'、'y'、'z'和'\0'这4个字符组成的数组的起始元素的指针。因此,如果我们执行下面的语句:
q = p;
p和q现在是两个指向内存中同一地址的指针。这个赋值语句并没有同时复制内存中的字符。
需要记住的是,赋值指针并不同时复制指针所指向的数据。
因此,当我们执行下面的语句之后:
q[1] = 'Y';
q所指的内存现在存储的是字符串'xYz'。因为p和q所指向的是同一块内存,所以p指向的内存中存储的当然也是字符串'xYz'。
译注:ANSI C标准中规定中禁止对string literal作出修改。K&R C中对这一问题的说明是,试图修改字符串常量的行为是未定义的。某些C编译器还允许q[1]='Y'这种修改行为,如LCC v3.6。但是,这种写法不值得提倡。
边栏推荐
- 04 | 后台登录:基于账号密码的登录方式(上)
- Multithreading realizes concurrent reading and execution of multi use case files +selenium grid4 realizes distributed deployment of test framework
- Look at robot education and lead the mainstream of quality education
- Groupby method
- cuda-gdb提示:/tmp/tmpxft_***.cudafe1.stub.c: No such file or directory.
- 明明开发薪资高,为什么我还是选了测试?
- R语言ERROR: compilation failed for package ‘****‘
- golang 协程的实现原理
- Family relationship calculator wechat applet source code
- HTB-Blocky
猜你喜欢
随机推荐
HTB-Blocky
Small program source code for campus stray cat information recording and sharing / wechat cloud development medium big cat spectrum small program source code
百度副总裁李硕:数字技术加持下中国劳动力成本上升是好事
Restfulapi - C - add header username and password authentication
融云 IM & RTC 能力上新盘点
金山云回港上市:中国TO B云厂商的港股奔袭
瀚高数据库最佳实践配置工具HG_BP日志采集内容
并发模式之单例和不变模式
创客教育的起源和内涵的基本理念
MySQL 操作数据库数据报错:Fatal error encountered during command execution
Etcd implementation of large-scale service governance application practice
Zone --- line segment tree lazy marking board sub problem
Verilog's time system tasks - $time, $stime, $realtime
VIM common commands
Mysql复合查询(重要)
并发模式之生产者消费者模式
Analysis of OWT server source code (III) -- video module analysis of mixer in
关于时间复杂度的一些新认识
解析Steam教育中的项目式学习创造力
Idea replaces the contents of all files









