- 3
- 0
- 约4.37千字
- 约 7页
- 2016-10-17 发布于重庆
- 举报
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 + 1);或者,因为p 是char * 型, 直接用p += sizeof(int);
4.空指针和未初始化的指针是一回事吗?
答:空指针在概念上不同
您可能关注的文档
最近下载
- 2026年街道党校党员教育培训工作计划.docx VIP
- 某医院住院楼供配电系统课程设计.doc VIP
- (正式版)DB32∕T 4469-2023 《港口危险货物码头企业安全生产隐患排查治理规程》.docx VIP
- 北师大版小学六年级数学上册教案 全册.docx VIP
- 社会工作专业关系建立.ppt VIP
- AP微观经济学 2016年真题 (选择题+问答题) AP Microeconomics 2016 Released Exam and Answers (MCQ+FRQ).pdf VIP
- 第四单元 第18课 排序计算有方法 教案 义务教育版(2024)信息科技四年级全一册.docx VIP
- 人教版(2024)七年级下册英语期中质量检测试卷(含答案).docx VIP
- 智能体育公园的规划设计与运营管理模式创新研究.docx VIP
- 毕业设计(论文)-哈尔滨市体育公园规划设计.docx VIP
原创力文档

文档评论(0)