![]() |
#2
叶纤2020-01-01 18:26
内联函数inline
1. 为了提高运行速度所做的改进 2. 不在于编写方式 3. 而在于被调用时运行机制不同编译器使用函数代码替换函数调用 • 常规的执行机智 int main() { fun1();//1的地址运行到箭头方向然后执行,然后fun2(我一个东西落小明家了,我去找小明要) fun2(); fun3(); void fun1() {..... } void fun2() {..... } void fun3() {..... } } 4. 内联函数机智inline //相当于借小明东西,小明直接把东西送到家了 int main() { fun1(); fun2(); fun3(); inline void fun1() { cout << "a" << endl; }//直接将代码复制到fun1()里,然后展开 inline void fun2() { cout << "b" << endl; } inline void fun3() { cout << "c" << endl; }//速度快但占用内存大,最重要用在类的存取 } 列#include<iostream> using namespace std; inline int s(int);//声明 int main() { int a=s(5+2); cout << a<< endl; } int s(int num) {return num*num; }只可以是同一类型 2*说到替换define是个好东西 /*#define N 5 以后所有使用N的场合都会被替换成5 #include<iostream> using namespace std; #define N 5//5放到了N里 #define S(num)num*num//num*num放在S()里 //宏定义了S(num)函数 以后所有使用S()的地方,都被替换成num*num*/ #include<iostream> using namespace std; #define N 5 #define S(num)num*num //宏定义了S(num)函数 以后所有使用S()的地方,都被替换成num*num int main() { int a=S(5); int b=S5+1;//把5+1传参给num5+1*5+1,S(((5+1)/2)); cout << N<< endl; cout << a<< endl; cout << b<< endl; return 0; }//5 25 11 36 可以换不同类型 |
首先在这里给大家说声假期快乐,其次给大家说声抱歉,小白的问题比较基础再次浪费大家的一点时间,
问题1设置为空指针的用意何在?如何检查空指针?我知道空指针不指向任何东西,而且我知道检测一个空指针使用
if(ptr) /* 如果 p 非空,则完成 */
if(!ptr) /* 如果 p 为空,则完成
这个我也尝试在代码中实现我的想法很简单就是加入
if(ptr){cout.....1}..else{cout......2}
但是当我把ptr赋值的时候确实打印的是2,不过如果没赋值
代码则是一个空白也没打印1,
问题2前几天我看到**ptr,我的初见理解如果*ptr是有值的,那**ptr
是不是*(*ptr)的意思,就是*指向 *ptr的值呢?
不知道我的理解对吗?
#include <iostream>
using namespace std;
int main ()
{ int a=5;
int *ptr =NULL;//是一个没方向的空指针,是一个为0的常量
ptr=&a;//给空指针赋值
cout << "ptr 的值是 " <<*ptr ;
return 0;
}