1
已解决
薛乘志
初级启示者
初级启示者
指针是c/c++的特色,通过指针可以实现大量好用的功能,在C++标准库中,list、vector等都或多或少使用了指针的方式实现动态内存分配
指针:
准确来说它不能存储任何直接可用的数据,顾名思义,指针即使用一个变量存储 存储另一个变量的内存地址
定义:
指针的定义是在变量名前加上“*”,如:
int *i;
string *s;
...
赋值:
指针不能直接赋值,它需要一个存储变量的地址,例:
...
int v = 20, *i;
i = &v;
...
注:&为取址运算符,学过函数按址传参的应该有所了解
访问:
指针的访问需要使用 间接寻址运算符*,例:
int v = 20, *i;
i = &v;
(*i)++;
cout << *i;
注意,*运算符的优先级与+-相同,进行运算时需要加括号
空指针:
指针定义时将其定义为空是一个好习惯,这样 便于调试 和 防止意外使用其他变量地址
int *v = NULL;
NULL也可写为0
new与delete:
new可为指针分配一块内存空间
int *a = NULL;
a = new (int);
*a = 1;
cout << *a;
delete可释放指针已经使用的内存空间
string *a = NULL;
a = new (string);
*a = "aa";
cout << *a;
delete a;
指针与数组:
以后有时间再写