-
?查看全部
-
常量查看全部
-
直接传进去数组的首地址查看全部
-
const(控制变量是否可以变化) const int x=3;(则此时x为常量,不可进行再赋值) const与指针类型 const int *p=NULL; int const *p=NULL;(两种写法完全等价) int *const p=NULL; const int *const p=NULL; int const *const p=NULL;(这两种写法也是完全等价的) int x=3; const int *p=&x; *p=4(错误,因为const指定的为*p);p=&y;(正确) int x=3; const int *const p=&x; p=&y(错误,因为const指向的为p,只能为x的地址) const与引用 int x=3;const int &y=x; y=10(错误,y通过const限定只能为x的别名,值为3) 总结: const int x=3;int *y=&x;(这种写法是错误的因为x本身定义为const,在用一个可变的指针指向,那么就有用指针改变x值得风险,这是系统所不允许的);查看全部
-
递归无法入内联函数查看全部
-
说一个比较好记的方法来区分 int const *p与 int* const p,把*读作pointer to然后从后往前读.<br> <br> 第一个int const *p就可以读作 p is a pointer to const int,p是指向常量的指针<br> <br> 第二个int* const p就可以读作 p is a const pointer to int,p是指向int型的常指针查看全部
-
#include <string.h> #include <iostream> using namespace std; int main(void) { //在堆中申请100个char类型的内存 char *str = new char[100]; //拷贝Hello C++字符串到分配的堆中的内存中 strcpy(char[100], "Hello imooc"); //打印字符串 cout<<char[100]<<endl; //释放内存 delete []p; p=NULL; return 0; }查看全部
-
申请内存查看全部
-
int *p = new int;用指针指向新申请的地址 申请一块内存也是用指针指向的,释放是delete []arr;对指针进行释放 int *p = new int[1000];if(NULL==p) { };当指针为空的时候,内存分配失败 释放完内存之后要将相应的指针赋值为空查看全部
-
const 修饰*p p指向的值不变 p可以指向新的地址 const修饰p的时候 p不能指向新的地址查看全部
-
有默认参数值的参数必须在参数表的最右端 声明时可以加参数默认值,定义函数时不建议加函数默认值 没有实参使用默认值,有实参就使用实参 内联函数必须足够简单,不能有for循环之类的复杂的逻辑结构。递归函数无法使用内联函数查看全部
-
int a = 3;int const *p = &a;*p = 5;这时候是不能够赋值5的,此时*p已经变成一个常量了,不再是一个变量。查看全部
-
释放内存注意事项查看全部
-
const控制变量是否可以变化的。加了const,就将一个变量变成了常量,定义的变量将会无法更改。<br> const int *P =null;和int const *p = null;完全等价,即为int和const可以换位。 const 写在*之前修饰的是*p,即确定指针的值不能都改变,指针的指向是可以改变的 const 写在*之后修饰的是p所指向的地址,只能指向一个地址,不能再指向其他的地址,也不能修改值 指针的前面和后面都是用const时,改变指针的指向和给指针赋值 int const *p;则*p的值不能改变;int * const p;则p的指向不能改变,值可以变,如果被赋值了,还可以通过*p改变值,这样做具有风险const int x = 3;int *p =&x;查看全部
-
引用必须初始化,int a =3;int &b =a;查看全部
举报
0/150
提交
取消