面试宝典之预处理、const与sizeof
#include <stdio.h>
#define SUB(x, y) x - y
#define ACCESS_BEFORE(element, offset, value) *SUB(&element, offset) =value int main(void)
{
int i; int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
ACCESS_BEFORE(array[5], 4, 6);
for (i = 0; i < 10; ++i){
printf("%d ", array[i]);
} return 0;
}
编译结果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdWNhbjIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
分析:
SUB(x, y) x - y
ACCESS_BEFORE(element, offset, value) *SUB(&element, offset) =value
ACCESS_BEFORE(array[5], 4, 6);->*SUB(&array[5], 4) =6 ->*&array[5] - 4 =6
*&array[5]的值为6,则减去4等于2,将6赋值给2,则肯定是错误的。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <iostream>
#include <string> using namespace std; struct {
short a1;
short a2;
short a3;
}A; struct {
long a1;
short a2;
}B; int main(void)
{
char *ss1 = "0123456789";
// int ss[100] = "0123456789"; cout << sizeof(A) << endl;
cout << sizeof(B) << endl;
cout << sizeof(ss1) << endl;
// cout << sizeof(ss) << endl; return 0;
}
假设去掉代码中的凝视,则编译结果为:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdWNhbjIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
由此可见 int ss[100] = "0123456789"; 这个语句是不对的,所以对其求sizeof也是不对的。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <stdio.h> char var[10];
int test(char var[])
{
return sizeof(var);
} int main(void)
{
printf("%d\n", test(var));
return 0;
}
var退化为数组的指针,而非数组。
面试宝典之预处理、const与sizeof的更多相关文章
- 程序员面试宝典 笔记(第六章 预处理 const 和sizeof())
void main() { "; cout<< cout<< "; cout<< cout<<strlen(ss2)<< ...
- C语言经典面试题 与 C语言面试宝典
1 预处理 问题1:什么是预编译?何时需要预编译? 答: 预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作.主要处理#开头的指令.如拷贝#include包含的文件代码.替换# ...
- GEEK学习笔记— —程序猿面试宝典笔记(二)
所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~ 程序猿面试宝典笔记(一)基本概念 程序猿面试宝典笔记(二)预处理.const和sizeof 程序猿面试宝典笔记(三)auto_ptr ...
- GEEK学习笔记— —程序猿面试宝典笔记(三)
所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~ 程序猿面试宝典笔记(一)基本概念 程序猿面试宝典笔记(二)预处理.const和sizeof 程序猿面试宝典笔记(三)auto_ptr ...
- c语言面试宝典(经典,超详细)
c语言面试宝典(经典,超详细) 2018年08月25日 09:32:19 chengxuyuan997 阅读数:7799 摘自:https://blog.csdn.net/chengxuyuan9 ...
- C++面试宝典2011版
1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new相应free仅仅会释放内存,new调用构造函数.malloc与free是C++/C语言的标准库函数,ne ...
- .NET工程师面试宝典
.Net工程师面试笔试宝典 传智播客.Net培训班内部资料 这套面试笔试宝典是传智播客在多年的教学和学生就业指导过程中积累下来的宝贵资料,大部分来自于学员从面试现场带过来的真实笔试面试题,覆盖了主流的 ...
- JAVA面试宝典分享
JAVA面试宝典分享 前言 面试题 Java面试题(上) Java面试题(中) Java面试题(下) 参考答案 其他补充内容: 项目经验 项目介绍 项目开发流程 项目管理 系统架构 第三方工具(插件) ...
- 【转】Java面试宝典2015版(绝对值得收藏超长版)(一)
(转自:http://mp.weixin.qq.com/s?__biz=MjM5MTM0NjQ2MQ==&mid=206619070&idx=1&sn=fcb21001d442 ...
随机推荐
- zabbix3.4 源码部署
centos6.8 系统 zabbix3.4.9 msyql5.7.22 php5.6.24 在centos6上面源码部署zabbix.3.4 问题比较多,需要花不少时间去解决,建议 ...
- ofbiz数据库表结构设计(1)- PARTY
ofbiz的精华就在于其数据结构(表结构)的设计.数据结构的通用性也决定了ofbiz几乎可以适用任何企业应用.我们首先来看看PARTY相关的表结构设计. 在ofbiz中,PARTY是个抽象概念,它可以 ...
- Swing要点
1. 布局管理器会控制潜逃在其他组件中组件的大小和位置. 2. 当某个组件加到背景组件上面时,被加入的组件是由背景组件的布局管理器管理的. 3. 布局管理器在做决定之前会询问组件的理想大小(setSi ...
- [LeetCode] Repeated DNA Sequences hash map
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...
- CC2540介绍
1. 介绍 CC2540是一款2.4GHz Bluetooth® low energy SOC,基于8051 MCU 首先,你需要硬件设备 笔者的开发板为CC2540DK 得到开发板的同时应该还有TI ...
- MOSFET 符號解說
符號 上面這個是 空乏型 的 MOSFET 符號 (有做過修改), 一個是 P channel, 一個是 N channel, 空乏型本身就有通道,所以中間是沒有斷掉的直線, P 代表 + , 有外放 ...
- JS-JavaScript String 对象-string对象方法1:fromCharCode()、charCodeAt()
1.fromCharCode(): 可接受一个指定的 Unicode 值,然后返回一个字符串. 1). 语法:String.fromCharCode(n1, n2, ..., nX) (n1, n2 ...
- CSU 1785: 又一道简单题
1785: 又一道简单题 Submit Page Summary Time Limit: 5 Sec Memory Limit: 128 Mb Submitted: 602 ...
- 吉首大学 问题 L: 小李子的老年生活
时间限制: 1 Sec 内存限制: 128 MB提交: 719 解决: 27 题目描述 小李子有n-1个朋友,分别编号为1..n-1,小李子的编号是n ,小李子的表面朋友的编号会与小李子编号互质 ...
- 51Nod 1019 逆序数(线段树)
题目链接:逆序数 模板题. #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a) ...