问题标签 [double-pointer]

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 投票
1 回答
157 浏览

c++ - 尝试赋值时 C++ 代码中断

我是 C++ 新手,正在尝试使用双指针为多维数组编写代码。这是我的代码:

类声明:

函数定义:

主功能:

它在init函数中有效,但是在set函数中我尝试检查它在数据函数中的第一if条语句处中断的值。set

0 投票
4 回答
115 浏览

c - 指向指针的简单指针

我知道为什么会这样:

我不明白为什么这不(在我的机器上打印3700或类似的东西)。

为什么两者不等价?

0 投票
4 回答
2022 浏览

c - 使用 pthread_exit() 访问返回值

我已经完成了以下代码。

我在 Line2 上遇到分段错误。Line2有什么问题

如果我将 Line2 修改为

printf("ret = %d\n", (int)ret);

没有分段错误,它打印正确的值(即 100)。我不明白为什么修改有效。我相信我对双指针的使用有错误的概念。我想纠正它。

分段错误的原因是什么以及为什么修改有效?

0 投票
1 回答
877 浏览

c++ - C++ LinkedList 结构引用为双指针,需要访问下一个节点

好的,所以我设置了一个链接列表结构:

连同插入功能:

我将如何访问 head 的下一个元素?使用当前的代码,我收到以下错误消息:

0 投票
3 回答
10555 浏览

c++ - 在 C++ 中用随机数填充二维数组

我正在制作一个程序,该程序插入一个带有随机整数的二维数组并定位最高值以显示它以及它在数组中的坐标。我正在使用三个文件。utils.h、utils.cpp 和 main.cpp。我的程序显示了一个数组,但它不正确,尽管我进行了所有研究,但我无法弄清楚原因。任何帮助,将不胜感激。这是一项大学作业,我知道我的教授希望 main 和 utils.h 保持原样,所以我唯一可以更改的是 utils.cpp。感谢您的时间。

这是我得到的输出。

0 投票
1 回答
2980 浏览

c++ - 奇怪的错误,错误:从 'const char*' 到 'char' 的无效转换 [-fpermissive]

每次我尝试编译这个(第 110 行的错误)

我收到此错误 110:17:错误:从 'const char*' 到 'char' 的无效转换 [-fpermissive] 我希望 2d 数组(第 4 行)不是 const char,帮助!-Lijrobert

0 投票
3 回答
795 浏览

c - 通过双指针访问数组,丢失它的主体,纯 C

当我尝试对通过双指针引用的数组内容进行排序时。

http://ideone.com/OapPh

第 77 行

内容尚未排序,通过相同的方法我使用函数ArrayPrint()非常好地打印该数组的值

这段代码在 MS C++ 编译器上编译得很好,关于 GCC 不知道。代码中没有任何警告或错误,MS 编译器没有按标准配置显示。

0 投票
1 回答
832 浏览

c - 指向带有 malloc 和 strdup 的结构的指针

我的主要目的是将一个指向结构的指针传递给一个函数,该函数将分配内存并填充其所有值。回来后我会在屏幕上打印出来。

结构看起来像这样。

请注意,我无法更改此结构的声明。我的主要功能就是这样非常简单。

}

fillArray 函数假设为我的结构分配 n + 1 个内存块,其中 n 是存在的实际锁数。而最后(n+1)个块将用零填充。因此,在从 main 打印时,我可以检查这种情况,而无需担心我分配的结构的长度。

我的问题出在 fillArray 函数中。

实际上这个 LINE100 会导致问题。它实际上替换了已经填充的结构条目,即这一行使 dlock[0]->name 填充为 0。而 dlock[1] 保持不变。

我的 gdb 日志显示类似这样的内容。

所有这些都是在分配和填充值之后获取的日志。

从注释 1 和注释 2 可以清楚地看出,strdup 已通过 malloc 返回已分配的内存位置,即第一次调用 strdup 已返回 dlock[2] 的地址。这怎么可能发生。因此,(*dlock+2)->name = 0 导致 dlock[0]->name 被填充为 0。

为了方便解释这个问题,Malloc 给我回了三个地址。为了便于理解,可以说,{1000,1008,1010} 我调用了两次 strdup,它返回了 {1010,1018}

这 1010 和 1018 分别存储在 char *name of lock[0] 和 lock[1] 中。

有人可以告诉我,我在这段代码中做错了什么还是 strdup 的问题(分配了一个已经分配的内存块)

注意:当我将 char *name 更改为 char name[20] 而不是 strdup 时,我使用了 strcpy,它运行良好。

0 投票
2 回答
113 浏览

c - 释放指向指针的指针

假设一个函数需要一个缓冲区来存放某些东西,并且可能需要将内存分配给函数范围内的缓冲区。它可能看起来像这样:

现在,稍后在这个函数中有另一个条件语句,它的计算结果为假,如果在 if/条件语句中返回假,则buf应该释放指向指针的指针,因为在函数本身中不能做更多的事情.

所以,有两种方法可以解决这个问题,我想知道哪一种在可扩展性、重用等方面会被认为“更安全”和更实用。

方法 A)

方法 B)

有些东西告诉我,方法A)将是推荐的方法,但我很好奇,想看看我是否看过任何东西。

另外,如果程序员需要释放一个指向指针的指针,是否就像将它传递给它一样简单,free(p)它会处理它?还是我需要将其转换为相同类型的单个指针?

这么多的问题...

0 投票
1 回答
667 浏览

c - 双指针实验二维数组

我正在尝试使用双指针实现二维数组。我试图实现的方法是根据其物理表示对其进行可视化。例如,考虑一个 2 x 2 矩阵,它的物理表示是

R1 -> A00 A01
R2 -> A10 A11

Step 1:创建指向第一行的双指针
Step 2:创建指向 c1 地址的一级指针
Step 3:用户输入
Step 4:创建指向 c2 地址的一级指针
Step 5:用户输入
第 6 步:将 Row 指针递增到点 R2
第 7 步:从第 2 步到第 5 步重复

下面是我实现的代码的代码片段:

scanf 似乎工作正常。但是在 printf 我得到不稳定的结果。它开始指向其他位置

你能告诉我如何按照我之前所说的方式实现这个二维数组吗?我做这个练习是为了实验目的,只是为了深入了解双指针的工作原理。