#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main ()
{
string s("xiao cui ai ni ?");
string *sp = &s; //* 可以靠近变量来写,也可以靠近类型来写,
//string* v1, v2; //v1是一个指针 v2就不是指针,
cout << s << endl;
cout << *sp << endl; // 是地址里边的数据,地址就是一个数
cout << sp << endl; //这是一个地址,
vector<int> *pvec; //int类型的变量指针,
int *ip1, *ip2;
int ival = 2016;
int *pi = 0; //指针0,表示不指向任何对象,
int *pi2 = &ival;
int *pi3; //没有初始化的指针,避免使用不初始化的指针,
pi = pi2;
pi2 = 0;
int ival2;
int zero = 0;
const int c_ival = 0; // 这是一个常量,
//int *pi4 = ival; // 这是错误的,
//int *pi4 = zero; // 这也是错的,
int *pi4 = c_ival; //对的,c_ival是一个常量可以是一个指针
// int *pi5 = 8632; // 自己写的一个数放到指针里边是不行的,
int *pi6 = NULL; // NULL是C语言定义的0,这是可以的,
double dval;
double *w = &dval; // 一个指针指向同类型的对象,
double *w2 = w; // 这里的w是一个地址,这是可以的,
double obj = 1.12;
int u;
void *pv = &obj; // void可以指向任何类型的指针,这是万能指针,pv指向double类型,
pv = &u; // pv指向int类型,
int a = 1;
int *pa = &a;
a = a + 3;
*pa = *pa + 4;
cout << a << endl; //输出是8,
cout << *pa << endl; //输出是8,
int sum = 60, sum2 = 40;
int *xiao = &sum, *xiao2 = &sum2; // 一个指针在声明的时候可以没有初始化,然后再初始化,
//引用在声明的时候必须初始化,引用引用了一个对象之后就不可以再改变,
int **ai = &xiao; // **是指针的指针,
int &cui = sum, &cui2 = sum2; // &是一个引用,引用一个变量,指向一个变量,引用也叫别名,
cout << sum << ", " << *xiao << ", " << cui << endl;
cout << **ai << endl; //输出的是60,
return 0;
}
指针
最新推荐文章于 2024-08-15 17:40:58 发布