返回整型数据的指针int *p

int *p与整型变量

int a = 3;
 int *p ;
 *p = &a;//不合法,出错

*p值改变,p指向的变量的值也会改变

int b;
 int *p = &b;
 *p = 100;
 cout << &b << ":变量b的地址:" << p << endl;
 cout<< "*p赋值会改变变量b的值:" << b << endl;
 cout << endl;
打印结果:

int*p和char变量

char a = 'd';
 int *p = (int *)&a;
 cout << (char)*p <<endl;//需要强制转换char类型可以输出字符

//否则,*p会输出一串固定的数值

打印结果:

b

int *p与一维整型数组

指针指向数组中的某一个元素,指针自加会移到下一个数组的元素的地址。

int a[5] = { 1, 2, 3, 4, 5 };
 int *p = &a[0];//等同于int *p=a;
 for (int i = 0; i <5; i++)
 {
  cout << *p++ << endl;
 }

int *p与二维整型数组

C语言规定数组名是首地址,也就是指针  。二维数组名就相当于二级指针(指向指针的指针)

以下证明:

扫描二维码关注公众号,回复: 1737942 查看本文章
int a[3][4]={a[0],a[1],a[2]};//二级指针可用
a[0]={1,2,3,4},//一级指针可用
a[1]={5,6,7,8},
a[2]={9,9,9,9}

例如:

int a[2][3] = {1,2,3,4,5,6};
 //int *p = &a[1][2];合法,指向数组a[1][2]
   //int *p=a;不合法
 int *p = a[1];//指向a[1],也就是a[1][0],a[1][2],a[1][3]的合段,&a[1]是不合法的
 cout << *p << endl;//输出a[1][0],默认数组首地址的内容

打印结果:

4

*p++ ,*p(++), (*p)++,*++p的使用

int b[5] = {9, 2, 3, 4, 5 };
 int *p = b; 
 for (int j = 0; j <4; j++)
 {
  cout <<b[j+1]<< "指针指向的内容:" << *++p << endl;//先p++,后*p
 }
 p = b;//指针指向恢复原来数组的首地址,因为上一次循环会改变p的地址值
 cout << endl;
 for (int j = 0; j < 5;j++)
 {
  //*p(++)语法错误
  cout << b[j]<<"指针指向的内容:" << *p++ << endl;//先*p,后p++
 
 }
 p = b;
 cout << endl;
 //分开执行是因为下面循环的*p的内容改变
 for (int j = 0; j < 5; j++)
 {
  cout << "值:" << (*p)++ << endl;//指针所指向的内容加1
 }

打印结果:









猜你喜欢

转载自blog.csdn.net/chen1083376511/article/details/78382446