📌  相关文章
📜  教资会网络 | UGC NET CS 2018 年 7 月 – II |问题 47(1)

📅  最后修改于: 2023-12-03 14:54:51.338000             🧑  作者: Mango

UGC NET CS 2018年7月-II-问题47

这是一个关于UGC NET CS 2018年7月-II的问题47的介绍,对程序员来说非常有用。

问题描述

以下是问题47的描述:

在C语言中声明:

int **p;

下列哪个选项是合法的?

A. **p = 10;

B. (*p)++ ;

C. *p[2] = { 2, 4, 6};

D. p[0][0] = 5;
解决方案

针对这个问题,下面是几个解决方案:

选项A: **p = 10;

这个选项是假的,因为p是一个指向指针的指针,不能将整数值直接赋给它。正确的方法是先声明一个指向整数的指针,然后将其地址赋给p,最终赋值给存储区域。

选项B: (*p)++ ;

这个选项是假的,因为*p是一个指向指针的指针,不能对其进行自增操作。正确的方法是先声明一个指向整数的指针,然后将其地址赋给p,最终对指针所指向的整数进行自增操作。

选项C: *p[2] = { 2, 4, 6};

这个选项是假的,因为p是一个指向指针的指针,不能在声明时初始化它所指向的整数数组。正确的方法是先声明一个指向整数的指针,然后将其地址赋给p,最终对指针所指向的整数数组进行操作。

选项D: p[0][0] = 5;

这个选项是真的,因为p是一个指向指针的指针,可以将整数值赋给其所指向的整数数组。这个选项的语法是正确的。

结论

根据上面的解决方案,我们可以得出以下结论:

  1. 在声明int **p时,p是一个指向指针的指针。
  2. 可以将整数值赋给p所指向的整数数组。
  3. 不能在声明时初始化指针或指针所指向的数组。