【c++】指针
指针的定义和初始化
//定义一个strA初始化为"ABC" string strA("ABC"); //定义一个指向string类型的指针p1,并初始化指向strA对象 //*操作符表明p1是一个指针变量;&是取地址操作符 string *p1 = &strA; //*是取值操作符,取p1指针指向的strA对象的值 cout << *p1 << endl;//ABC //通过指针可以修改指向对象的值 cout << strA << endl;//ABC *p1 = "D"; cout << strA << endl;//D
连续声明多个指针容易导致混淆
//p2是指针变量,p3不是指针变量 string *p2, p3;
指针操作
//定义一个指针 string *p1; string strA("ABC"); //指针指向strA对象 p1 = &strA; string strB("D"); //通过指针修改strA对象 *p1 = "ABC-"; //指针指向strB对象 p1 = &strB; //通过指针修改strB对象 *p1 = "D-"; //输出 cout << strA << endl;//ABC- cout << strB << endl;//D-
指向指针的指针
int ival = 1024; int *pi = &ival; int **ppi = π cout << ival << endl;//1024 cout << *pi << endl;//1024 cout << **ppi << endl;//1024
使用指针访问数组元素
int ia[6] = { 5,2,4,6,8,9 }; int *ip = ia;//指向ia[0] cout << *ip << endl;//5 ip = &ia[4];//指向ia[4] cout << *ip << endl;//8 cout << *(ip+1) << endl;//9 //指向ia[5]
使用指针遍历数组
const int iSize = 10; int iArr[iSize] = { 0,1,2,3,4,5,6,7,8,9 }; //指向第一个元素的指针 int *iBegin = iArr; //指向最后一个元素后面的指针 int *iEnd = iArr + iSize; //循环输出数组元素 for (int *ip = iBegin; ip != iEnd; ip++) { cout << *ip << endl; } //合起来写 for (int *ip = iArr; ip != (iArr + iSize); ip++) { cout << *ip << endl; }