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

我会带着你远行 2022-06-06 03:36 363阅读 0赞

int *p与整型变量

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

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

  1. int b;
  2. int *p = &b;
  3. *p = 100;
  4. cout << &b << ":变量b的地址:" << p << endl;
  5. cout<< "*p赋值会改变变量b的值:" << b << endl;
  6. cout << endl;

打印结果:
Center

int*p和char变量

  1. char a = 'd';
  2. int *p = (int *)&a;
  3. cout << (char)*p <<endl;//需要强制转换char类型可以输出字符
  4. //否则,*p会输出一串固定的数值

打印结果:

b

int *p与一维整型数组

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

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

int *p与二维整型数组

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

以下证明:

  1. int a[3][4]={a[0],a[1],a[2]};//二级指针可用
  2. a[0]={1,2,3,4},//一级指针可用
  3. a[1]={5,6,7,8},
  4. a[2]={9,9,9,9}

例如:

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

打印结果:

4

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

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

打印结果:

Center 1

发表评论

表情:
评论列表 (有 0 条评论,363人围观)

还没有评论,来说两句吧...

相关阅读