我目前正在做一种'控制器'变量,可以改变原来的变量的值。
#include <stdio.h>
void changearr(int* arr[]);
int main()
{
int arr[3] = {3,4,5};
int* controller[3];
int idx = 0;
printf("Value of array is : ");
for (idx = 0; idx < 3; idx++)
{
printf(" %d", arr[idx]);
controller[idx] = &arr[idx];
}
printf("\n");
changearr(controller); // arr is now changed by the controller value
printf("Value of array is :");
for (idx = 0; idx < 3; idx++)
{
printf(" %d", arr[idx]);
}
printf("\n");
return 0;
}
void changearr(int* arr[])
{
int idx = 0;
for (idx = 0; idx < 3; idx++)
{
*arr[idx] += 1;
}
}
代码似乎像我预期的那样工作。
然而,我不喜欢变量“controller”(指针数组)应该在for循环下初始化的部分。
有没有像“memcpy”这样的方法可以使代码更简单?
2条答案
按热度按时间6yt4nkrj1#
感谢评论区的所有作者& Clifford。我误解的是
但是希望
所以,我需要做的就是
所以理想的代码如下所示:
9vw9lbht2#
正如您在注解中所指出的,
controller
没有任何真实的用途,因为您可以传递arr
,并更简单地在当前*arr[idx]
所在的位置索引arr[idx]
。这似乎是一个不必要的间接级别。不存在 * 运行时 * 非迭代解决方案来生成指向数组元素的指针数组(即使这有任何意义)。当然,你可以静态地初始化数组:但是,只有当
controller
的元素在运行时被更改(例如通过排序)时,这才有用。