InterView之C/CPP cal
cal
#define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?
i 为30。 5 * 5 + 5
下面关于“联合”的题目的输出?
A
//
// Created by zhangrongxiang on 2018/3/15 11:10
//
#include <stdio.h>
union {
int i;
char x[2];
} a;
void main() {
a.x[0] = 10;
a.x[1] = 1;
printf("%d", a.i);
}
266 低位低地址,高位高地址,内存占用情况是Ox010A
B
//
// Created by zhangrongxiang on 2018/3/15 11:13
//
#include <stdio.h>
int main() {
union { /*定义一个联合*/
int i;
struct { /*在联合中定义一个结构*/
char first;
char second;
} half;
} number;
number.i = 0x4241; /*联合成员赋值*/
printf("%c%c\n", number.half.first, number.half.second);//AB
number.half.first = 'a'; /*联合中结构成员赋值*/
number.half.second = 'b';
printf("%x\n", number.i);//6261
return 0;
}
AB(0x41对应'A',是低位;Ox42对应'B',是高位)6261(number.i和number.half共用一块地址空间)
已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。
Mystrcpy
//
// Created by zhangrongxiang on 2018/3/15 11:18
// File 4
//
/*
编写strcpy函数(10分)
已知strcpy函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
答:为了 实现链式表达式。 // 2分
例如 int length = strlen( strcpy( strDest, “hello world”) );
*/
#include <assert.h>
#include <stdio.h>
char *Mystrcpy(char *strDest, const char *strSrc) {
assert((strDest != NULL) && (strSrc != NULL));// 2分
char *address = strDest; // 2分
while ((*strDest++ = *strSrc++) != '\0');// 2分
return address; // 2分
}
int main() {
char desc[20] = {0};
char src[20] = "Hello World";
Mystrcpy(desc, src);
printf("%s\n", desc);
return 0;
}
Mystrlen
//
// Created by zhangrongxiang on 2018/3/15 16:17
// File 7
//
#include <stdio.h>
#include <assert.h>
int Mystrlen(const char *str) { // 输入参数const
assert(str != NULL); // 断言字符串地址非0
int len = 0;
while ((*str++) != '\0') {
len++;
}
return len;
}
int main() {
char str[] = "Hello World";
printf("%d\n", Mystrlen(str));//11
printf("%d\n", (int) sizeof(str));//12
}
There are twoint variables: a and b, don’t use “if”, “? :”, “switch”or other judgementstatements, find out the biggest one of the two numbers.
( ( a + b ) + abs( a - b ) ) / 2
如何打印出当前源文件的文件名以及源文件的当前行号?
cout << __FILE__ ;
cout << __LINE__ ;
//__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的
main主函数执行完毕后,是否可能会再执行一段代码,给出说明?
可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void),fn4 (void);
void main( void ){
String str("zhanglin");
_onexit( fn1 );
_onexit( fn2 );
_onexit( fn3 );
_onexit( fn4 );
printf( "This is executed first.\n" );
}
int fn1(){
printf( "next.\n" );
return 0;
}
int fn2(){
printf( "executed " );
return 0;
}
int fn3(){
printf( "is " );
return 0;
}
int fn4(){
printf( "This " );
return 0;
}
如何判断一段程序是由C编译程序还是由C++编译程序编译的?
#ifdef __cplusplus
cout << "c++";
#else
cout << "c";
#endif
InterView之C/CPP cal的更多相关文章
- InterView之C/CPP
CPP 引用 什么是"引用"?申明和使用"引用"要注意哪些问题? 答:引用就是某个目标变量的别名(alias),对应用的操作与对变量直接操作效果完全相同.申明一 ...
- awesome cpp
https://github.com/fffaraz/awesome-cpp Awesome C/C++ A curated list of awesome C/C++ frameworks, lib ...
- Hdu 4734 【数位DP】.cpp
题意: 我们定义十进制数x的权值为f(x) = a(n)*2^(n-1)+a(n-1)*2(n-2)+...a(2)*2+a(1)*1,a(i)表示十进制数x中第i位的数字. 题目给出a,b,求出0~ ...
- c++interview
出自:https://github.com/huihut/interview Github | Docsify 简体中文 | English 关于 本仓库是面向 C/C++ 技 ...
- Pramp mock interview (4th practice): Matrix Spiral Print
March 16, 2016 Problem statement:Given a 2D array (matrix) named M, print all items of M in a spiral ...
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
- WCF学习系列二---【WCF Interview Questions – Part 2 翻译系列】
http://www.topwcftutorials.net/2012/09/wcf-faqs-part2.html WCF Interview Questions – Part 2 This WCF ...
- WCF学习系列一【WCF Interview Questions-Part 1 翻译系列】
http://www.topwcftutorials.net/2012/08/wcf-faqs-part1.html WCF Interview Questions – Part 1 This WCF ...
- Amazon Interview | Set 27
Amazon Interview | Set 27 Hi, I was recently interviewed for SDE1 position for Amazon and got select ...
随机推荐
- plsql导入导出表数据
导出表结构: Tools(工具)-->Export User Objects(导出用户对象) -->选择要导出的表(包括Sequence等)-->.sql文件,导出的都为sql文件 ...
- [c# 20问] 1. 何时使用class与struct
POINTS struct为可以包含数据和函数的值类型 struct为值类型所以不需要堆(heap)而是在栈(stack)上分配空间 struct将数据直接存在struct中,而class只存引用类型 ...
- c#复习提纲
c#零碎整理 注:本文中大部分图片来自老师的PPT,感谢邵老师!文中所有内容为自己按照PPT整理,欢迎指正! 标识符 标识符(类名.变量名.方法名.表空间名等) 大小写敏感 正则表达式 小括号(组合 ...
- Java NIO Selector选择器
Selector是Java NIO中的一个组件,用于检查一个或多个NIO Channel的状态是否处于可读.可写.如此可以实现单线程管理多个channels,也就是可以管理多个网络链接. 为什么使用S ...
- JAVA实现长连接(含心跳检测)Demo
实现原理: 长连接的维持,是要客户端程序,定时向服务端程序,发送一个维持连接包的. 如果,长时间未发送维持连接包,服务端程序将断开连接. 客户端: Client通过持有Sock ...
- Java按位取反运算符“~”的工作原理
说明:本文参考了文章<Java按位取反运算符“~”>,链接:https://blog.csdn.net/smilecall/article/details/4245447 补充:位运算符( ...
- 十一、linux文件系统权限详解
对于文件系统权限,我们前面已经讲解了一部分,这里就不在重复了. 1.修改文件权限有两种,一种是数字.一种是字母 (chmod 的修改只能是属主或者root) 数字: 修改目录权限和目录内所有文件的权限 ...
- wireshark 1.10.0 编译 及 协议解析部分的一些变化
wireshark不久前升级到1.10.0稳定版,这个版本正如其版本号一样,相比1.8.x有较大变化. 我们先说说在windows下编译的问题,1.8.4/1.8.6版本的编译见我的文章:http:/ ...
- 利用wxpy进行微信信息发送详解(一)
利用wxpy进行微信信息自动发送,简直是骚扰神器,除非拉黑你. 那我们就来设置一个场景吧,五秒发送一次,一次发送10条 首先我们来整理一下思路: ♦1.首先我们要从网上爬去我们想要发送的内容 ♦2.登 ...
- Java多线程——不变性与安全发布
1.不变性 某个对象在被创建后其状态就不能被修改,那么这个对象就称为不可变对象,不可变对象一定是线程安全的.不可变对象很简单.他们只有一种状态,并且该状态由构造函数来控制. 当满足以下条件时,对象才是 ...