*运算符——>间接访问
int main(){
int i=2;
int *pi=&i;//定义语句
i=2;
*pi=3;//间接访问
}
int*基类型是int的指针变量
设计一个函数交换两个变量的内容
拷贝——>值传递
没有交换x,y的值
void swap(int x, int y) {
int t = x;
x = y;
y = t;
}
int main() {
int x = 1;
int y = 2;
swap(x, y);
}
传递地址
void newswap(int *x, int *y) {
int t = *x;
*x = *y;
*y = t;
}
int main() {
int x = 1;
int y = 2;
newswap(&x, &y);
}
使用引用解决问题
将值传递改为引用传递
如果函数调用完成,会修改参数的内容,使用引用传递
void newnewswap(int &x, int &y) {//使用引用传递,x,y是主调函数的
int t = x;
x = y;
y = t;
}
int main() {
int x = 1;
int y = 2;
newnewswap(x, y);
}
自由存储空间
void addNode(int i) {
int newNode = i;
}
int main() {
for (int i = 0; i < 10; i++) {
addNode(i);
//没有申请10个int型空间,因为局部变量在栈帧上,调用完就回收了
}
}
void *addNode(int i) {
int *pNewNode=new int;//申请在堆/自由存储区上面
*pNewNode = i;
return pNewNode;
}
int main() {
int *array[10];
for (int i = 0; i < 10; i++) {
array[i]=addNode(i);
}
}
内存泄露
避免方法:delete array[i];