c/c++面试秘笈1
2021-04-09 04:25
标签:全局变量 文件 class 指针 自己的 std 不同 处理 char s 1、不使用任何中间变量如何将a,b的值进行交换 执行结果: 2、c++和c有什么不同 3、如何理解c++是面向对象化的,而c是面向过程化的 4、#include 5、预处理的使用 6、用#define实现宏并求最大值和最小值 7、用宏得到一个字的高位和低位字节 8、用宏得到一个数组所含的元素个数 9、const的使用--找出下面代码中有错的地方 10、说明const和#define的特点及区别 11、c++中const的使用 12、static有什么作用 13、对结构体或类做sizeof运算时要注意并不是简单的将各个成员所占的内存数量相加 14、使用sizeof计算普通变量所占空间大小(结构体、类对象、含有虚函数的类对象) 15、sizeof和strlen有哪些区别 c/c++面试秘笈1 标签:全局变量 文件 class 指针 自己的 std 不同 处理 char s 原文地址:https://www.cnblogs.com/zgjias/p/13372330.html前言:前一段时间,看了一本剑指offer书籍及程序员面试秘笈
下面将在这里写下最近所看到、所学到的内容,也是温故而知新,完善自己的知识库
#include
after swap ...
a1 = 2, b1 = 1;
a1 = 4, b1 = 3;
a1 = 6, b1 = 5;
a1 = 1, b1 = 2147483647
c++是面向对象的语言;它将数据结构和算法看成一个整体叫做算法,可以理解为:对象=数据结构+算法,程序=对象+对象+...
c是面向过程的语言;它核心是功能分解、自顶向下、逐层分解,可理解为:程序=数据结构+算法
c是面向过程化的,但是c++不是完全面向对象化的。在c++中也完全可以写出与c一样的过程化的程序,所以只能说c++拥有面向对象的特性。java是真正面向对象化的
尖括号表明这个文件是一个工程或标准头文件
双引号""是由用户自己写的头文件
#if 0 #endif
#define DEBUG #ifdef DEBUG #endif
#define MAX(x, y) (((x) > (y))? (x) : (y))
#define MIN(x, y) (((x)
#define WORD_LO(xxx) ((byte) ((word)(xxx) & 255))
#define WORD_HI(xxx) ((byte) ((word)(xxx) >> 8))
//一个字由两个字节组成。WORD_LO(xxx)取参数xxx的低8位,WORD_HI(xxx)取参数xxx的高8位
#define ARR_SIZE(a) ( sizeof((a)) / sizeof((a[0])) )
#include
#define存在于代码段
const存在于数据段,并在堆栈分配了空间
1:const用于定义常量:const定义的常量编辑器可以对其进行数据静态类型安全检查(只读)
2:const修斯函数的形式参数,例如:void fun(A a);和void fun(A const &a);后者相对前者提高了效率,如果不叫const可能会改变a的值
1:在函数体内,被声明为静态的变量在这一函数被调用的过程中维持这个值不变
2:在模块内(但在函数体外),被声明为静态的变量可以被模块内所有函数访问,但不能被模块外的其他函数访问,它是个全局变量
3:在模块内,被声明为静态的函数只能被这个模块内的其他函数调用
计算的时候要考虑字节对齐!!
类型 在32位机器下 在64位机器下
char 1 1
short int 2 2
int 4 4
long int 4 8
long long int 8 8
char* 4 8
float 4 4
double 8 8
//在32位机器下
char str[] = "hello";
char *p = str;
int n = 10;
sizeof(str) = ; //6
sizeof(p) = ; //4
sizeof(n) = ; //4
void func(char str[100])
{
sizeof(str) = ; //4
}
void *p = malloc(100);
sizeof(p) = ; //4
1:sizeof是操作符,strlen是函数
2:直观的理解为,sizeof是求大小,strlen是求字符串长度