int * prt 这里的表示*prt是一个指针,
类型为int*, prt是指向int类型的指针 此时指针还未初始化,称为野指针
int x = 1; int * ptr = & x; 此时prt指向了x
*:解引用运算符,又称间接运算符(与乘号完全不同!!!)
cout << * prt << endl;
cout << prt << endl;
int * p1, p2; 此处p1是指针,p2是变量
int x = 100, y = 50; int * p1 = & x; int ** p2 = & p1; 此处p1为一级指针,指针p2指向另一个指针,是二级指针
double x;
double *p1 = &x, y;
double *p2 = &(*p1);
p1 = &y;
上述代码(heng zhong yao)中: p1为指向y的指针 p2为指向x的指针(不指向y) p2绝对不指向p1!!!(那是二级指针!!!) y的类型是 double 不是 double* !
#include <iostream>
using namespace std;
int main() {
int x, y;
int *p1 = &x;
int *p2 = &y;
int **p3 = &p1;
*p1 = 3;
*p2 = 5;
cout << x << " " << y << endl;
**p3 += 10;
cout << x << endl;
return 0;
}
结果: 3 5 13
#include <iostream>
using namespace std;
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x, y;
cin >> x >> y;
swap(&x, &y);
cout << x << " " << y;
return 0;
}
如果没有指针就无法完成交换,而这个代码可以完成两数交换。
|