c++ - 指针变量有什么作用?

标签 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. 如果 ptra 被声明为整型变量,*ptr=a; 会做什么?

最佳答案

What does *ptr=arr; Where ptr is declared as an integer and arr is an integer array?

设置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'

What does *ptr=a; do if ptr and a are declared as integer variables?

你说的,在代码中是这样的:

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;
      |    ^~~

关于c++ - 指针变量有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55442403/

相关文章:

C++,用define声明一个数组;怎么了? (简单快捷)

c++ - 如何使用 QPainter 绘画?

c++ - 为什么不使用 `make_x()` 函数尽可能省略 move 构造函数?

c++ - 浮点异常(核心转储)#694457

c++ - 在 pthreads 中指定线程堆栈大小

C++ 使用来自另一个标识符下的头文件的包含类

c++ - C++98 标准在哪里指定对静态成员的调用何时依赖于模板?

c++ - 在将指针传递给函数后,如何向下转换指针?

c++ - 编译 Mongodb 3.6.5 以插入到 Docker 镜像中

c++ - 应用回调来调用 gsl_integration