指针变量有什么作用?

时间:2019-03-31 15:21:34

标签: c++

问题是要找到以下程序的输出:

#include <iostream>
using namespace std;

int main() {
  int arr[]={6,3,8,10,4,6,7};
  int *ptr=arr,i;
  cout<<++*ptr++<<'@';
  i=arr[3]-arr[2];
  cout<<++*(ptr+i)<<'@'<<'\n';
  cout<<++i+*ptr++<<'@';
  cout<<*ptr++<<'@'<<'\n';
  for(;i>=0;i-=2)
      cout<<arr[i]<<'@';
  return 0;
}

以上程序的输出为:

  

7 @ 11 @

     

6 @ 8 @

     

11 @ 3 @

我知道何时使用这样的指针:*ptr=&var;会将变量var的地址存储在指针变量ptr中。

这些是我的问题:

  1. *ptr=arr[];的作用是什么? ptr被声明为整数,而arr是整数数组?

  2. 如果将*ptr=a;ptr声明为整数变量,a会做什么?

3 个答案:

答案 0 :(得分:3)

  

*ptr=arr;是什么ptr被声明为整数而arr是整数数组?

设置ptr指向数组arr的第一个元素。在What is array decaying?

中了解更多信息

声明如下:

int arr[]={6,3,8,10,4,6,7}; // declare array 'arr'
int *ptr // declare pointer to `int` 'ptr'
  

如果将*ptr=a;ptr声明为整数变量,a会做什么?

您在代码中所说的是:

int ptr, a;
*ptr=a;

会产生错误,如下所示:

prog.cc: In function 'int main()':
prog.cc:4:4: error: invalid type argument of unary '*' (have 'int')
    4 |   *ptr=a;
      |    ^~~

答案 1 :(得分:0)

  1. int *ptr=arr都将ptr声明为int指针,并将ptr中第一个整数的地址分配给arr
  2. *ptr=aa的值分配给ptr的对象,即ptr指向的整数。

答案 2 :(得分:0)

  1. *ptr = arr;获取arr.中第一个元素的地址
  2. *ptr = a;a的值分配给ptr所指向的整数。
相关问题