目录
一、说说使用指针需要注意什么?
1、定义指针时,先初始化NULL;
2、用malloc或new申请内存之后,应该立即检查指针值是否为NULL,防止使用指针值为NULL的内存;
3、不要忘记为数组和动态内存赋初值,防止将未被初始化的内存作为右值使用;
4、避免数字或者指针的下标越界,特别要当心发生“多1”或者“少1”的操作;
5、动态内存的申请与释放必须配对,防止内存泄漏;
6、用free或delete释放了内存之后,立即将指针设置为NULL,防止野指针。
二、简述C++有哪几种传值的方式,之间有什么区别
传参方式有三种:值传递、引用传递、指针传递。
1、值传递:形参即使在函数体内发生变化,也不会影响实参的值;
2、引用传递:形参在函数体内值发生变化,会影响实参的值;
3、指针传递:在指针指向没有发生改变的前提下,形参在函数体内值发生变化,会影响实参的值。
#include <iostream>
using namespace std;
void func(int a,int *b,int &c)
{
a=2;
*b=3;
c=4;
printf("a=%d,b=%d,c=%d\n",a,*b,c);//a=2,b=3,c=4
}
int main()
{
int i=10;
int a=20;
int *j=&a;
int k=30;
func(i,)
printf("i=%d,j=%d,k=%d\n",i,*j,k);
return 0;
}
三、简述const * 和* const的区别
const* 是常量指针;*const 是指针常量
int const *a; //a指针所指向的内存里的值不变,即(*a)不变;
int *const a; //a指针所指向的内存地址不变,即a不变;
四、说说内联函数和函数的区别,内联函数的作用。
1、内联函数比普通函数多了关键字inline;
2、内联函数避免了函数调用的开销;普通函数有调用的开销;
3、普通函数在被调用的时候,需要寻址(函数入口地址);内联函数不需要寻址;
4、内联函数有一定的限制,内联函数体要求代码简单,不能包含复杂的结构体语句;普通函数没有这个要求。