📜  C++ 程序的输出 |第 47 组(指针)

📅  最后修改于: 2022-05-13 01:56:10.906000             🧑  作者: Mango

C++ 程序的输出 |第 47 组(指针)

先决条件:C/C++ 中的指针

1. 以下程序的输出是什么?

#include 
using namespace std;
  
int main()
{
    int a = 32, *ptr = &a;
    char ch = 'A', &cho = ch;
  
    cho += a;
    *ptr += ch;
    cout << a << ", " << ch << endl;
    return 0;
}

选项:
一种。 32、A
湾32、一个
C。 129,一个
d. 129、A

Answer: c. 129, a

解释: “ptr”变量是一个指针,保存变量“a”的地址。 “*ptr”返回“a”变量的值。 “cho”是“ch”的参考变量。因此,对“cho”所做的任何更改都将反映到“ch”。因此,当“cho”增加 32 时,它与“A”的 ASCII 值(65)相加,结果为 97,即“a”的 ASCII 值(来自字母表)。所以这个“a”被存储在“ch”中。至于当“*ptr”增加“ch”时,它给出的值是97+32=129。

2. 以下程序的输出是什么?



#include 
using namespace std;
  
int main()
{
    const int i = 20;
    const int* const ptr = &i;
    (*ptr)++;
    int j = 15;
    ptr = &j;
    cout << i;
    return 0;
}

选项:
一种。 20
湾21
C。 15
d.编译错误

Answer: d. Compile error

说明:这里“ptr”被定义为一个常量指针,它保存着一个常量整数“i”的地址。所以,“ptr”的值既不能改变,它所持有的值也不能改变。因此,“(*ptr)++”和“ptr=&j”行是无效的,因为它们分别试图修改变量 i 的内容和指针的值。这给出了一个错误。

3. 下面程序的输出是什么?

#include 
using namespace std;
int main()
{
    int num[5];
    int* p;
    p = num;
    *p = 10;
    p++;
    *p = 20;
    p = &num[2];
    *p = 30;
    p = num + 3;
    *p = 40;
    p = num;
    *(p + 4) = 50;
    for (int i = 0; i < 5; i++)
        cout << num[i] << ", ";
    return 0;
}

选项:
一种。 10、20、30、40、50
湾10, 20, 30, 40, 50,
C。编译错误
d.运行时错误

Answer: b. 10, 20, 30, 40, 50, 

解释:很简单。这些值被分配给数组,并取消引用以打印它们。

4. 以下程序的输出是什么?

#include 
using namespace std;
int main()
{
    int arr[] = { 4, 5, 6, 7 };
    int* p = (arr + 1);
    cout << *arr + 10;
    return 0;
}

选项:
一种。 12
湾15
C。 14
d.错误

Answer: c. 14

说明: 'arr' 用作指向数组的指针。所以 'arr' 指向数组中的第一个位置。类似地,'arr + 1' 指向数组中的第二个位置,依此类推。因此,*arr 访问数组中的第一个值,即 4,并将其与 10 相加。这将给出 14 作为输出。

5. 以下程序的输出是什么?

#include 
using namespace std;
int main()
{
    int a = 10, *pa, &ra;
    pa = &a;
    ra = a;
    cout << "a=" << ra;
    return 0;
}

选项:
一种。 10
湾没有输出
C。编译错误
d.运行时错误

Answer : c. compile error

说明:引用变量不同于指针。指针可以初始化也可以赋值,但引用只能初始化。这里,'ra' 引用变量被分配了 'a' 的地址,而不是在声明时对其进行初始化。这会引发编译错误 - 'ra' 声明为引用但未初始化。