网站建设知识,标书制作简单吗,网站多久才能在百度上收到,网站建设综合实训一、数组的引用int main()
{int a 10, b 20;int ar[10] { 1,2,3,4,6,7 };int x ar[0];int p[5] ar;//errorint(p)[10] ar;//引用整个数组的大小sizeof(ar)int(*p)[10] ar;//typesize表示整个数组//只有在这三种情况下代表整个数组#xff0c;其他情…一、数组的引用int main()
{int a 10, b 20;int ar[10] { 1,2,3,4,6,7 };int x ar[0];int p[5] ar;//errorint(p)[10] ar;//引用整个数组的大小sizeof(ar)int(*p)[10] ar;//typesize表示整个数组//只有在这三种情况下代表整个数组其他情况下退化成为数组首元素的地址
}二、指针的引用int main()
{int a 10, b 20;int* ip a;int* s ip;int* rs ip;rs b;//ipb;*rs 100;//*ip100;//int* rb; //error
}三、引用作为形参代替指针void swap(int ap, int bp)
{int temp ap;//不需要判空能够使用引用就不需要使用指针ap bp;bp temp;
}int main()
{int a 10, b 20;swap(a, b);
}
四、指针和引用的区别从语法规则上来看指针变量存储某个实例变量或对象的地址引用是某个实例的别名。程序为指针分配内存区域而不为引用分配内存区域。解引用是指针使用时要在前面加*引用可以直接使用。指针变量的值可以发生改变存储不同实例的地址引用在定义的时候就被初始化之后无法改变不能是其他实例的引用。指针变量的值可以为空没有空引用。指针变量作为形参需要测试它的合法性判空NULL引用不需要判空。对指针变量使用“sizeof”得到的是指针变量的大小对引用变量使用“sizeof”得到的是变量的大小。理论上指针的级别没有限制但引用只有一级。既不存在引用的引用但可以有指针的指针。引用和指针的效果不同。 对指针变量的操作会使指针变量指向下一个实体变量或对象的地址而不是改变所指实体变量或对象的内容。对引用的操作直接反应所引用的实体变量或对象。不可以对函数中的局部变量以引用或指针的方式返回。从汇编规则上来看int b int* const x在编译的角度来说引用其实是自身为常性的指针。五、inline内联函数当函数执行调用时系统要建立栈空间保护现场传递参数以及控制程序执行的转移等等这些工作主要系统时间和空间的开销。inline的设置inline举例inline bool ISNumber(char c)
{return (c 0 c 9) ? true : false;
}int main()
{char ch;while (cin.get(ch), ch ! \n){if (ISNumber(ch)){cout 是数字型字符 endl;}else{cout 不是数字型字符 endl;}}
}要点inline是一种以空间换时间的做法省去调用函数的开销。但当函数体的代码过长或者递归函数即便加上inine关键字也不会在调用点以内联展开该函数。inline对于编译器而言只是一个建议编译器会自动优化。inline不建议声明和定义分离分离会导致链接错误。因为inline被展开就没有函数地址了链接就会找不到。哪种情况下采用inline处理适合什么情况下以普通函数形式处理合适呢如果函数的执行开销小于开栈清栈开销函数体较小使用inline处理效率高。如果函数的执行开销大于开栈清栈开销使用普通函数处理。内联函数与宏定义区别内联函数在编译时展开带参的宏在预编译时展开。内联函数直接嵌入到目标代码中带参的宏是简单的文本替换。内联函数有类型检测、语法判断等功能宏只是替换。