问题标签 [pointer-to-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.
c++ - 如何使用 for 循环 C++ 将不同的值输入到 2D 指针到指针数组中
我创建了两个数组,朋友和时间聊天。我不想编写手动将每条数据放入二维数组的长代码,而是想用 for 循环来完成。我创建了一个 2D 数组,2 列和 5 行。一列必须包含所有朋友的姓名,另一列必须包含所有时间。我哪里错了?
代码:
c++ - 无法理解符号:* 和 ** 带指针
我的指针有问题。我知道这是做什么的:
我知道这是一个指针。
我一直在搜索,但我不明白这个是做什么的,也没有找到有用的信息
上下文是 int **name,而不是乘法
有人可以帮助我吗?
c - 一个内存地址怎么可能还有另一个内存地址?
我已经将一个整数变量的地址存储在一个指针中,然后将先前的地址存储到另一个指针中。我无法理解它实际上是如何工作的。
c - 整数/结构数组的结尾?
基本上 main() 将如何知道要遍历的字节数,即 alloco() 函数分配的内存。字符数组中是否有像 NULL 这样的分隔符?
c - 指针对指针地址和算术
程序员!
我完全沉迷于双指针(指针对指针)......这里有很多问题!
让我们从这个任务开始:我正在编写自定义版本的“calloc”函数,它必须返回指向“n”个大小为“size”的内存元素的指针。这是我发明的:
所以,基本上我分配 n*size 个字节,然后将相等“大小”的指针数组“分配”到相应的起始位置。让我们输入 n=4 和 size=3;这意味着 p[0] 指向 tmp[0],p[1] 指向 tmp[3],p[2] 指向 tmp[6] 等等。在 GDB 中,我几乎在每一步之后都跟踪指针值。
然后,在“main”中,我声明了一个双指针并将其“附加”到从我的“calloc”接收到的缓冲区中:
1)这已经是第一个问题:'main()'(或我将传递** p副本的任何其他函数)如何知道指针算术的大小?例如,'main()' 是如何知道如果我将 '1' 添加到 'space' (或简单地增加一次),它应该指向它的第二个指针(在 'calloc' 中它是 p[1]),它(在这种特殊情况下)是第一个指针(p [0])的3个字符吗?此外,如果我在 'alloc' 数组中创建指向具有“可变长度”的字符串的指针(例如,p[0] 指向 tmp[0],p[1] 指向 tmp[7],p[2] 指向 tmp [11] 等),任何其他函数如何知道它应该在哪里将“上”指针增加 4 以及在哪里增加 7 个“字符”?
好吧,我们更进一步,我尝试将一些字符放入获取的缓冲区:
2)这是第一个问题的证据:实际上,当我在这里增加“空间”时,它移动的不是3而是4个字符(在第一个'++'之后它是0x804cfe4,在第二个0x804cfe8之后)。为什么?与“浮动”型尺寸有什么联系吗?在第一次这样递增之后,'*space' 指向 0x804cfe6...我认为它不正确。
我尝试了另一种方式 - 引用“空间”,而不是指针而是数组:
3) 在这种情况下,指针似乎没问题 - 例如 space[1] == 0x804cfe3,space[2] == 0x804cfe6。问题是,当这个循环在 j == 2 的情况下运行时,'space[0]' 的值不知何故从 0x804cfe2(移动了两次 - ok)变成了 0x6a04cfe2(超出范围)。什么。。???
4) 而且,地址有一些奇怪的行为。我也试过不直接将字符写入**空间,而是使用字符串复制功能:
在复制函数内部,GDB 中的复制和递增显示正确。但在从'strncpy1'返回后,space[j] 从 0x804cfe0 变为 0x804000a 之类的东西。被调用函数怎么可能影响父母的(外部)指针?
那么最后,指针到字符指针是什么类型的?它有什么尺寸?
c++ - operator= 用双指针重载分数数学
最初,我的实验室传递了三个参数: addFractionJesseR(*lFrac, *rFrac, **resFrac); 但我刚刚发现我不能传递三个参数。我不得不将其更改为 **resFrac = addFractionJesseR(*lFrac, *rFrac); 现在我在编译时遇到问题。我知道我的指针和双指针在某个地方超出了范围,但我就是不知道在哪里。调试器指向第二行作为问题:
由以下方式调用:
**resFrac = addFractionJesseR(*lFrac, *rFrac); 最初是 addFractionJesseR(*lFrac, *rFrac, **resFrac);
由以下方式调用:
*resFrac = addMenu(lFrac, rFrac) 最初是 addMenu(lFrac, rFrac, &resFrac)
(是的,我确实对我的所有指针都调用了 delete,我还是 Stack Overflow 的新手,并且正在学习只放置相关的代码片段)我需要帮助来指引我正确的方向。我认为我的指针超出了 addMenu 或 displayMenu 某处的范围......也许我取消引用了一个错误的双指针?
任何帮助将不胜感激!
编辑:
swift - 从具有 uint8_t ** 作为输出参数的 Swift 调用本机方法
我有一个带有接口的 C 方法
这被导入到 Swift 作为
如何从 Swift 调用此方法?
c - c指针指向如何遍历它
我正在尝试使用 hashLinks 遍历 hashMap。这是正确的方法吗?hashLinks 在一个数组中,并且在一个链表中可能有更多的 hashLinks 链接到它们。我只是不明白如何使用指向指针的指针。tableSize 是数组中元素的数量。在每个数组位置,可能会有更多的 hashLinks 链接到第一个位置。
c - 关于双指针和三指针/双维数组
所以,我在玩 C 指针和指针算术,因为我对它们并不完全满意。我想出了这个代码。
char*** aPtr2 = &a
根据 gcc 4.8.3 是不可接受的,为什么?
抱歉忘记添加编译器警告:
警告:从不兼容的指针类型初始化[默认启用]
可能不清楚我想说什么,所以我不得不添加这个链接:
- 这是有效的代码:http: //ideone.com/4ePj4h。(第 7 行。注释掉)
- 这是不起作用的代码:http: //ideone.com/KMG7OS。(第 6 行。注释掉)
注意注释掉的行。
c - 这是指向数组开头指针的指针吗?
我一直在帮助某人编写一些代码。他有这个:
然后想得到一个指向数组开头的指针。而不是使用:
要不就
他曾经
他最终得到了一个指向那里的指针吗?我不确定&dataArray
会给他什么。