【发布时间】:2013-04-26 18:34:03
【问题描述】:
根据以下答案和反映的警告/问题更新了代码
我正在尝试用 C 编写一个指针数组。一个循环设置值,另一个循环检索它们——相当简单。以下是我尝试设置这些值的方式:
static int *toInvert[8];
for (i=0; i<8; i++)
{
int *intrplated = //Function call that returns int*
toInvert[i] = intrplated;
//printf("OL Value = %d\n\n\n\n\n",oLoop);
}
为了检索值,这里是没有循环的代码,即检索一个固定值:
int *tmpPtr = toInvert[3];
printf( "*(TPointer + %d) : %d\n\n", 3, *(toInvert[3] + 1)); //Still gives the recently added value
当我尝试打印这些值时,只会打印setter 循环中最后添加的值。即使我将 tmpPtr 更改为toInvert[1],它仍然会获得最后设置的值。
但如果我在编写的 for 循环中运行相同的代码,它会按预期工作。
我需要知道如何检索所有已设置的值。谢谢
编辑
我想要的是一个包含 8 个指针的 8 个元素的数组。每个指针依次指向一个由 3 个普通整数组成的数组。
我想要的数组应该是[p1][p2]...[p8],其中[p1] 指向一个整数数组。
【问题讨论】:
-
啊,一个指针数组。如此简单的概念,在 C 语言中却如此复杂。
-
在 SE 中搜索“[c] 指针数组”时,我得到了 15,966 个结果。 (我试图建议您的问题可能已经在某个地方得到了回答)。
-
你为什么要取插入变量的地址?
-
您正在存储一个局部变量的地址,该地址在循环体结束时不再存在。
-
它甚至不是一个指针数组,它是一个指向指针的数组!
标签: c arrays pointers for-loop