问题标签 [void-pointers]
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 - 从 (void *) 类型取消引用结构
我正在尝试使用 void 指针传递数据,然后将其转换为 (pData *) 类型。我究竟做错了什么?gcc 给了我
gcc test.c 错误:请求成员“文件名”不是结构或联合
c - 将包含另一个结构的结构传递给 pthread_create
所以我试图传递一个包含多个变量的结构,包括另一个处理位图信息的结构。但是,我的代码在某处失败,因为它在取消引用指向结构中包含的信息的指针时吐出错误“取消引用指向不完整类型的指针”。我知道这里有很多问题要处理这个问题,但我试图实施那里所说的并且失败了。
这是来自 main() 的相关代码,包括有关初始化的编辑:
以下是作为 pthread_create 参数传递的函数的相关代码:
}
这是结构:
c++ - arrays of void pointers
again this question is also origined from "Thinking in C++" Chapter7, Q#7. I believe the Stack header file should be changed to Stack.h
and the implementation of Stack::Stack(void* arr[], int size) in Stack.cpp, I believe could be like:
However, in the main test file StackTest.cpp, how could I pass the address of a string array to this constructor? Here is what I come up with:
But it has some segmentation fault. What I could think of is to change Stack::Stack(void* arr[], int size) to Stack::Stack(string arr[], int size), however it doesn't satisfies the question requirement. The purpose of Stack to store generic objects, including string for example. I believe I still have difficulty to understand the conceipt of void* pointer and array of pointers and the chagne between string array to void* array etc... Anyone could help me solve this problem? Thanks a lot!!
c++ - 通过函数参数获取数组
我有一个声明为的数组
和一个函数
我正在尝试使用以下代码调用该函数:
我应该通过什么来获取数组?谢谢
编辑 1
编辑 2
c++ - void* 和 void** 的心智模型?
注意:我是一位经验丰富的 C++ 程序员,所以我不需要任何指针基础知识。只是我从来没有void**
和void*
.. void**
我希望有人能很好地解释这一点,这样我就可以更容易地记住语义。
考虑以下代码:(使用例如 VC++ 2005 编译)
c++ - C++ - 转换 void 指针
当您尝试将 a 强制void*
转换为不是的东西时,C++ 是否会引发运行时异常?
objective-c - 如何使用 AVAssetReader 添加到 AudioBufferList?
我一直在使用 AVAssetReader 读取音频资产,以便以后可以使用带有 AudioUnit 回调的 AUGraph 播放音频。我有 AUGraph 和 AudioUnit 回调工作,但它从磁盘读取文件,如果文件太大,它会占用太多内存并使应用程序崩溃。所以我转而直接阅读资产,并且只有有限的大小。然后,我会将其作为双缓冲区进行管理,并在需要时获取 AUGraph 所需的内容。
(注意:我很想知道我是否可以使用音频队列服务并且仍然使用带有 AudioUnit 回调的 AUGraph,以便 iOS 框架为我管理内存。)
我的问题是我对 C 中的数组、结构和指针没有很好的理解。我需要帮助的部分是将保存在单个 AudioBuffer 上的单个 AudioBufferList 并将该数据添加到另一个保存所有 AudioBufferList 的 AudioBufferList以后使用的数据。我相信我需要使用 memcpy,但不清楚如何使用它,甚至为我的目的初始化一个 AudioBufferList。我正在使用MixerHost作为参考,它是来自 Apple 的示例项目,它从磁盘读取文件。
如果您想在 Xcode 中加载它,我已经上传了我正在进行的工作。我已经弄清楚了完成这项工作所需的大部分内容,一旦我将数据全部收集在一个地方,我就可以开始了。
示例项目:MyAssetReader.zip
在标题中,您可以看到我将 bufferList 声明为指向结构的指针。
然后我以这种方式分配bufferList,主要是从MixerHost借来的......
最后我循环阅读。
我不确定我处理 mDataByteSize 和 mData 的内容,尤其是使用 memcpy。由于 mData 是一个空指针,这是一个额外的棘手区域。
在这一行中,我认为它应该将值从 localBufferList 中的数据复制到 bufferList 中的位置加上帧数以将指针定位在它应该写入数据的位置。我有几个想法,我需要改变什么才能让它工作。
- 由于 void 指针只是 1 而不是 AudioUnitSampleType 指针的大小,我可能还需要将它乘以 sizeof(AudioUnitSampleType) 以使 memcpy 进入正确的位置
- 我可能没有正确使用 malloc 来准备 mData 但由于我不确定会有多少帧我不知道该怎么做才能初始化它
目前,当我运行这个应用程序时,它会以一个无效的 bufferList 指针结束这个函数。
感谢您帮助我更好地了解如何管理 AudioBufferList。
c - 这是对 void 指针的适当使用吗?
这个问题是关于在特定实现中使用 void 指针的适当性。
我有一个相对简单的程序,它由一个无限循环组成。在每个循环中,程序都会迭代固定范围的常量值,并对每个值调用一个函数。调用的特定函数可以是三个可用函数之一,并在运行时由参数指定。在无限循环开始之前,有一个条件块,它根据提供的参数设置一个指向函数的函数指针。这样,条件逻辑只需运行一次,而不是在每个循环的每次迭代中运行。
这我已经实现并且效果很好,但我想在每次调用函数之间保持状态。我的建议是将状态存储在结构中,并在对每个值调用函数时传递该结构。问题在于每个函数需要不同的结构来存储其状态的一组不同值,并且所有三个函数的原型必须兼容(对于函数指针)。我打算通过在三个函数的原型中使用 void 指针来解决这个问题,从而保持兼容的原型,但允许我将不同的结构传递给每个函数。
问题是; 我的提议是对 void 指针的适当使用,还是它引入了太多的运行时动态,因此我应该重新考虑我的方法?
注意:不可能在三个函数中的每一个中都使用静态变量,因为结构体也需要在无限循环中可用,因为在迭代值范围之前和之后还要进行一些处理。
c - C:复制数组而不知道它的类型
我有函数,它接收指向数组的指针和指向函数的指针,并且应该返回新数组,其顺序由传入参数的函数定义。我的问题是如何在不知道其类型的情况下将一个数组的元素复制到另一个数组
传入最后一个参数的函数
主要代码:
运行 arrSorted 后包含垃圾,有人可以指出我,我想念什么吗?
我的另一种选择是不复制,只是将一个数组指向另一个数组,这可能吗?
谢谢。
c - void 类型的数组
plain C 有很好的特性 - void 类型指针,它可以用作指向任何数据类型的指针。
但是,假设我有以下结构:
其中 value 字段可能指向 char 数组、int 或其他内容。
所以在分配这个结构的新实例时,我需要:
1) 为这个结构分配内存;
2)为值分配内存并将其分配给值字段。
我的问题是 - 有没有办法声明“类型为 void 的数组”,它可以转换为任何其他类型,如 void 指针?
我想要的只是使用具有转换为任何类型的能力的“灵活成员数组”(在 C99 标准的 6.7.2.1 中描述)。
像这样的东西:
我想将 token->value 声明为 char 或 int 数组并稍后转换为所需的类型将完成这项工作,但对于稍后将阅读此代码的人来说可能会非常混乱。