pointers相关内容

void*(*routes)(void*)在C中是什么意思?

我正在学习C语言,我得到了这个表达式: void *(*routine)(void *) 我觉得这很让人困惑。也许它是一个指针.指向一个指针..。指向指针? 如果我想将这个东西传递到一个函数中,我们应该如何操作它呢?我试图将此例程构造作为参数传递给一个函数,该函数接受void(*)(void).但是我不太明白那到底是什么意思。 推荐答案 void *(*routine)(v ..
发布时间:2022-03-01 10:34:14 其他开发

什么是未对齐的指针?

我知道在下面一行中,我们试图写入无效的内存位置。但这实际上也是一个未对齐的指针。有人能解释一下什么是未对齐的指针吗?下面的未对齐的指针是怎么回事? *(int*)0xffffffff = 0xbad; 推荐答案 许多体系结构都有一个称为对齐的概念,其中硬件被设计为对字大小倍数的地址进行操作。例如,在32位处理器上,对象可能与32位边界(4字节)对齐,而在64位处理器上,对象可能与6 ..
发布时间:2022-02-27 10:32:01 其他开发

Python变量是指针吗?否则,它们是什么?

据我所知,Python中的变量只是指针。 根据此规则,我可以假定此代码片段的结果为: i = 5 j = i j = 3 print(i) 将是3。 但是我得到了一个意外的结果,结果是5。 此外,我的Python书确实介绍了这个示例: i = [1,2,3] j = i i[0] = 5 print(j) 结果将是[5,2,3]。 我理解错误的地方是什么 ..
发布时间:2022-02-21 10:29:32 Python

sizeof(some pointer) 是否总是等于四?

例如:sizeof(char*) 返回 4.正如 int*、long long* 以及我尝试过的所有内容一样.有没有例外? 解决方案 你得到的保证是 sizeof(char) == 1.没有其他保证,包括不保证 sizeof(int *) == sizeof(double *). 实际上,在 16 位系统上,指针大小为 2(如果你能找到的话),在 32 位系统上为 4,在 64 位系 ..
发布时间:2022-01-31 10:09:05 C/C++开发

如何从 C 中的指针获取数组的大小?

我已经分配了一个大小为 n 的 mystruct 的“数组",如下所示: if (NULL == (p = calloc(sizeof(struct mystruct) * n,1))) {/* 处理错误 */} 后来,我只能访问p,而不再拥有n.有没有办法确定只给出指针 p 的数组的长度? 我认为它必须是可能的,因为 free(p) 就是这样做的.我知道 malloc() 会跟踪它分配 ..
发布时间:2022-01-31 10:05:57 其他开发

函数指针的解引用是如何发生的?

为什么以及如何取消引用函数指针只是“什么都不做"? 这就是我要说的: #include无效你好(){ printf(“你好");}诠释主要(无效){(*****你好)();} 来自这里的评论: 函数指针只是取消引用很好,但是结果函数指定人将立即转换回函数指针 从 这里: 取消引用(以您认为的方式)函数的指针意味着:访问一个编码内存,因为它将是一个数据记 ..
发布时间:2022-01-31 10:01:44 C/C++开发

C 编程:另一个函数中的 malloc()

我需要 malloc() 在另一个函数中方面的帮助. 我将 pointer 和 size 从我的 main() 传递给函数,我想为该指针分配内存从被调用函数内部动态使用 malloc() ,但我看到的是......正在分配的内存是用于在我的被调用函数中声明的指针而不是指针这是在 main(). 我应该如何传递一个指向函数的指针并为传递的指针分配内存从被调用函数内部? 我编写了以下 ..
发布时间:2022-01-31 09:53:52 其他开发

指针在 C 中是如何工作的?(你什么时候可以使用它们?)

指针指向指针在 C 中是如何工作的? 您什么时候可以使用它们? 解决方案 假设一台具有 8 位地址的 8 位计算机(因此只有 256 字节的内存).这是该内存的一部分(顶部的数字是地址): 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69+----+----+----+----+----+----+----+----+----+----+ ..
发布时间:2022-01-31 09:43:28 其他开发

NULL、'\0' 和 0 有什么区别?

在 C 中,各种零值之间似乎存在差异——NULL、NUL 和 0. 我知道 ASCII 字符 '0' 的计算结果为 48 或 0x30. NULL指针通常定义为: #define NULL 0 或者 #define NULL (void *)0 此外,还有一个 NUL 字符 '\0' 似乎也等于 0. 这三个值有不相等的时候吗? 在 64 位系统上也是如此吗? ..
发布时间:2022-01-31 09:33:11 其他开发

指向数组/指针数组的C指针消歧

以下声明有什么区别: int* arr1[8];int (*arr2)[8];诠释 *(arr3[8]); 理解更复杂的声明的一般规则是什么? 解决方案 int* arr[8];//一个 int 指针数组.int (*arr)[8];//指向整数数组的指针 第三个和第一个一样. 一般规则是运算符优先级.随着函数指针的出现,它会变得更加复杂. ..
发布时间:2022-01-31 09:28:31 其他开发

const int*、const int * const 和 int const * 有什么区别?

我总是搞砸如何正确使用 const int*、const int * const 和 int const *.是否有一套规则来定义你能做什么和不能做什么? 我想知道在分配、传递给函数等方面的所有注意事项. 解决方案 向后阅读(由 顺时针/螺旋规则): int* - 指向 int 的指针 int const * - 指向 const int 的指针 int * const - ..
发布时间:2022-01-31 09:22:05 C/C++开发

数组衰减为指针的例外情况?

我在许多帖子中看到“在大多数情况下,数组名称会衰减为指针". 我能否知道在哪些情况/表达式中数组名称不会衰减为指向其第一个元素的指针? 解决方案 当然. 在C99中有三种基本情况,即: 当它是 & (address-of) 运算符的参数时. 当它是 sizeof 操作符的参数时. 当它是 char [N + 1] 类型的字符串文字或 wchar_t [N + 1] ..
发布时间:2022-01-31 08:50:35 其他开发

创建指向二维数组的指针

我需要一个指向静态二维数组的指针.这是怎么做到的? 静态 uint8_t l_matrix[10][20];无效测试(){uint8_t **matrix_ptr = l_matrix;//错误观点} 我收到各种错误,例如: 警告:来自不兼容指针类型的赋值 下标值既不是数组也不是指针 错误:灵活数组成员的使用无效 解决方案 这里要创建一个指向数组第一个元素的指针 uint8 ..
发布时间:2022-01-31 08:39:37 其他开发

为什么使用“新"会导致内存泄漏?

我先学了 C#,现在我开始学习 C++.据我了解,C++ 中的运算符 new 与 C# 中的运算符不同. 你能解释一下这个示例代码中内存泄漏的原因吗? A 类 { ... };结构 B { ... };A *object1 = new A();B 对象2 = *(新 B()); 解决方案 发生了什么 当您编写 T t; 时,您正在创建具有 自动存储持续时间 的 T 类型的对象.超 ..
发布时间:2022-01-30 16:47:56 C/C++开发