问题标签 [multiple-indirection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
104 浏览

c - execv 的 argv 参数的 const 正确性

可能重复:
C 中的双指针 const 正确性警告

看看这里的表格:http: //pubs.opengroup.org/onlinepubs/009695399/functions/exec.html

我们看到以下内容在 C 中是无效的:

为什么这是无效的?在我看来,这const char * const argv[]只是比char * argv [],“更恒定”(并且在 C++ 中是允许的),那么为什么它在 C 中无效?

0 投票
2 回答
122 浏览

c - 通过 void 函数分配 3d 数组

当 i=0 和 j=2 时,我得到一个分段错误;但我不知道为什么!

你可以帮帮我吗 ?

那是我的功能:

0 投票
1 回答
1156 浏览

c - 将数组传递给函数时的双指针间接

我想复习我的算法知识,我一直在使用以下书:简而言之算法

在第 65 页,他们打印了一个插入排序算法。该算法非常简单且易于理解。我的问题来自他们实施它的方式。我主要使用托管语言(C#/Java)工作,所以我的指针功夫有点生疏。这是他们提供的代码示例:

这是我添加的一个工作示例:

虽然这可行,但我不完全理解为什么以及如何?另外,为什么主函数中的 (void **) 强制转换起作用,为什么他们使用双指针间接等?

回到学校,我们唯一使用多重间接的地方是动态分配多维数组时。我知道的唯一其他用途是当您需要能够修改您传递给该方法的指针所持有的地址时。

此外,我继续修改代码,使其看起来像这样,它工作得很好:

我很确定我遗漏了一些基本而明显的东西。感谢您阅读本文并提出一两个想法的任何人。如果您需要任何其他详细信息,或者我是否弄乱了术语,请告诉我。

编辑:修复了第一个 cmp 函数中的错字

0 投票
1 回答
165 浏览

c - 多维数组有多少个间接级别?

我正在使用 Microsoft Visual Studio Express 2013,试图做一些事情......代码实际上可以运行,但仍然存在错误,代码为 C4047:'char *' differs in levels of indirection from 'char[24][50]'

是这样吗?

无视警告,该程序按我预期的方式运行,没有问题。我只是想了解和了解背后发生的事情。(stale) 警告表示我在函数中传递多维数组的行。这是该函数的参数行:

这就是我如何称呼它main

labels在哪里char labels[24][50] = { ... };

真正的问题是什么?据我所知,多维数组不是数组数组(具有多级间接),而只是一个数组(具有单级间接)。

0 投票
2 回答
297 浏览

c - 更多级别的间接是否会对 C 中的性能产生影响

如果我有一个包含结构数组的结构......等等

访问更好吗

或者这只是一样

或者效率损失的级别数量是否有限制,编译器优化是否有任何效果?

非常感谢您提供的任何见解。

0 投票
3 回答
149 浏览

c++ - 指向指针数组的指针

我知道我应该知道这一点,但为时已晚,我的大脑无法将这些碎片拼凑起来。

这是一个直截了当的问题:

我有一个结构item。我想创建一个指向该项目类型的指针数组的指针。

例如。

我想要一个ArrayPointer指向数组的那个点。我希望该数组在每个元素中包含一个指向项目的指针。

我如何在 C++ 中执行此操作,或者更具体地说,我需要在哪里放置多少个取消引用运算符?我知道如何声明基本(单间接)指针,并且非常熟练地使用它们。

如果可能的话,我需要以下步骤的信息:

宣布ArrayPointer.

ArrayPointer用大小 s初始化。

ArrayPointer用初始化每个元素new item

例如:

我觉得一旦有人发布答案,我就会用力捂脸,以至于我的鼻子都折断了。

0 投票
1 回答
204 浏览

c - c 多重间接 - 将 char** 分配给 char* 数组

Achar**是指向 a 的指针char*。这意味着 a 的值是 achar**的地址char*。a 的值char*是存储在内存中的字符数组中第一个元素的地址。

所以在下面的代码中:

  • char* words[3];是一个包含 3 个指向字符数组的指针的数组,也就是char*.
  • char** ppc;是一个指针char*

我的问题是你如何分配ppc = words什么时候words是一个char*s数组。

0 投票
3 回答
76 浏览

bash - 将输出作为文件名执行

在我的一个 Bash 脚本中,有一点我有一个SCRIPT包含 的变量/path/to/an/exe,而脚本最终需要做的是执行该可执行文件。因此脚本的最后一行是

所以$SCRIPT扩展为/path/to/an/exe, 并$(/path/to/an/exe)执行可执行文件。

但是,shellcheck在脚本上运行会生成此错误:

$($SCRIPT)有没有办法以更合适的方式重写它?eval在这里似乎没有太大帮助。

0 投票
4 回答
218 浏览

bash - 执行由执行名称在变量中的脚本产生的命令

最初发布这个问题时,我完全用错了,获得了另一个合理但不同的问题,在这里得到了正确的回答。

以下是我最初想问的问题的正确版本。

在我的一个 Bash 脚本中,有一点我有一个变量SCRIPT,其中包含/path/to/an/exe在执行时输出一个line to be executed.

我的脚本最终需要做的是执行line to be executed. 因此脚本的最后一行是

所以$SCRIPT扩展为/path/to/an/exe, 并$(/path/to/an/exe)执行可执行文件并返回line to be executed, 然后执行。

但是,shellcheck在脚本上运行会生成此错误:

$($SCRIPT)有没有办法以更合适的方式重写它?eval在这里似乎没有太大帮助。

0 投票
2 回答
81 浏览

c - C 多重间接

我目前正在观看有关 C 中指针的课程,并且我有一个关于多重间接的问题。我明白多重间接是什么,这没关系,但是我运行了一段代码,我试图以不同的方式做同样的事情,但它不起作用,我想知道为什么?我的问题是关于第 32 行的指针转换,为什么当我像这样转换它时这不起作用:printf("Value pointed to by gp is:%s\n",(char *)gp); 这是代码: