C++基础系列(2)

1.继续sizeof的问题。
sizeof()是一个类似宏定义的东西,编译过程中不对他进行编译,sizeof中的东西都是其中东西的类型,如果是个函数,就按照返回值来确定。unsigned 类型和有符号的长度都是一样的,不同的是最高位符号位有没有用。所有指针的siezeof都是4.自定义的类型都按照类型原型来确定。

2.宏和内联函数的区别:
内联函数相当于把程序直接写到那里去。而不是让程序跳转,这样可以加快运行速度,但是会增加代码长度,占用内存。一般小段的函数,使用频繁的才调用。而宏就不一样了,只是一个简单的替代,编译之前就写好了,编译过程不对其进行编译。宏不是函数,只是预处理。宏的第一规则是绝不该使用他,除非不得不这样做。

3.引用和指针的区别:
引用不能为空,一旦指定了某个对象,就不能改变了,但是对象的内容可以改变,指针就不一样了,指针可以为空,可以在需要的时候指向不同的对象。在使用之前,指针应当检查是否为空,引用就不需要了。声明一个引用的时候要同时给它赋值,否则会有错误。

4.程序的内存分配:
程序的内存分配分成5个区,1.栈区,程序运行时申请的空间,2.堆区,由程序员分配支配的空间,3.静态常量区,存储一些静态变量,编译器即时分配。4.常量存储区,存储一些常量,不可改变。5.二进制代码存放区。如下代码:

char c[] = "hello world";
char* str = "hello world";

c就是一个布局变量,存储在栈里,由编译器分配的,而第二个str就不一样了,它是一个常量指针,其中的东西是不能改变的。比如让 *str =’a’就不行。

5.构造子类时,先调用父类的构造函数,再调用子类的构造函数。

6.函数指针:函数指针,函数返回指针,const指针,指向const的指针,指向const的const指针。

void(*f){};
void *f();
const int* ;
int* const;
const int* const;

7.用变量a给出 定义。
1,一个整形数;2,一个指向整型数的指针;3,一个指向指针的指针,他指向的指针是指一个整型数;4,一个有10个整型数的数组;5,一个有10个指针的数组,该指针是指向一个整型数的;6,一个指向有10个整型数数组的指针;7,一个指向函数的指针,该函数有一个 整形参数并返回一个整形数;8,一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整形数。

int a; //1
int* a; //2
int **a; //3
int a[10]; //4
int* a[10]; //5
int (*a)[10]; //6
int (*a)(int);//7
int (*a[10])(int);  //8

指针好复杂……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值