【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 = &pi;
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;
}

 

posted @ 2021-08-17 14:13  王牌飞行员_里海  阅读(409)  评论(0编辑  收藏  举报