【发布时间】:2019-12-11 09:28:16
【问题描述】:
我正在尝试创建一个指针数组。初始化每个指针时,我不能使用 (ptr + 1) 来分配一些东西。
示例代码:
int* demo = (int*) malloc(5*sizeof(int));
int a = 1;
int b = 2;
int* pa = &a;
int* pb = &b;
demo = pa;
demo+=1;
demo = pb;
会起作用,而
int* demo = (int*) malloc(5*sizeof(int));
int a = 1;
int b = 2;
int* pa = &a;
int* pb = &b;
demo = pa;
(demo + 1) = pb;
不会。它在最后一行显示错误:“需要左值作为赋值的左操作数”。
有什么方法可以使用(因为没有更好的术语)“临时递增指针”,还是我只需要存储原始指针并通过递增我的指针来遍历我的数组?
【问题讨论】:
-
你的代码没有意义。
demo = malloc(...); demo = ...是内存泄漏。你想在这里做什么? -
您希望
(demo + 1) = pb如何工作?你认为它应该怎么做? -
与
int x = 0; x + 1 = 3;的情况相同。指针没有什么特别之处。 -
是的,你想做什么?与流行的看法相反,过度使用指针并不会让你成为更好的程序员。
-
您确定您使用的是 c++ 而不是 C?对于这样的事情,如果没有 malloc,你会好得多。
标签: c++ pointers pointer-arithmetic