- 3
- 0
- 约7.17千字
- 约 7页
- 2017-09-24 发布于湖北
- 举报
C语言经典问答摘录
1.这样的初始化有什么问题?char *p = malloc(10); 编译器提示“非法初始式” 云云。
答:这个声明是静态或非局部变量吗?函数调用只能出现在自动变量(即局部非静态变量)
的初始式中。因为静态变量的地址必须在编译的过程中就确定下来而 malloc()申请的内存
地址是在运行时确定的。
2. *p++ 自增 p 还是 p 所指向的变量?
答:后缀++ 和-- 操作符本质上比前缀一目操作的优先级高, 因此*p++ 和*(p++) 等价, 它
自增 p 并返回 p 自增之前所指向的值。要自增 p 指向的值, 使用(*p)++, 如果副作用的顺
序无关紧要也可以使用++*p。
3 我有一个char * 型指针正巧指向一些 int 型变量, 我想跳过它们。为什么如下的代码
((int *)p)++; 不行?
答:在 C 语言中, 类型转换意味着“把这些二进制位看作另一种类型, 并作相应的对待”;
这是一个转换操作符, 根据定义它只能生成一个右值(rvalue)。而右值既不能赋值, 也不能
用++ 自增。(如果编译器支持这样的扩展, 那要么是一个错误, 要么是有意作出的非标准扩
展。) 要达到你的目的可以用:
p = (char *)((int *)p +
您可能关注的文档
- AD画零件图步骤.doc
- 测系大修CAN总线协议原理特点.ppt
- AN总线简介.pdf
- 浅析Catalyst 4900系列交换机.doc
- CNA 常用单词.doc
- AXA教程.pdf
- DR X3问答大全.doc
- ATV有源分布系统介绍.ppt
- entos 5.5安装图解.pdf
- h1 概率论的基本概念.ppt
- 2026《岳阳林纸中高层领导力现状、问题及对策》9200字.doc
- 2026《云南白药内部控制中存在的问题及对策研究》6500字 .doc
- 2026《云南水富云天化企业所得税会计研究》8800字 .doc
- 2026《长赐轮事件中的各类损失及海上保险问题分析》4200字.docx
- 2026《直播带货发展背景下企业品牌价值评估研究的相关理论文献研究综述》6100字.docx
- 6 怎么都快乐 课件-2025-2026学年语文一年级下册统编版.pptx
- 2026《旬邑彩贴剪纸保护与传承研究的文献综述》3300字.docx
- 2026《伊春光明集团薪酬管理改进调研报告》6000字.doc
- 《变现金句1000条》番外篇.pdf
- 第8课《时间的脚印》课件(内嵌视频)-2025-2026学年统编版语文八年级下册.pptx
原创力文档

文档评论(0)