问题是要找到以下程序的输出:
#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
中。
这些是我的问题:
*ptr=arr[];
的作用是什么? ptr
被声明为整数,而arr
是整数数组?
如果将*ptr=a;
和ptr
声明为整数变量,a
会做什么?
答案 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)
int *ptr=arr
都将ptr
声明为int
指针,并将ptr
中第一个整数的地址分配给arr
。*ptr=a
将a
的值分配给ptr
的对象,即ptr
指向的整数。答案 2 :(得分:0)
*ptr = arr;
获取arr.
中第一个元素的地址*ptr = a;
将a
的值分配给ptr
所指向的整数。