将 C 程序转换为使用数组中的指针并具有相同的输出
Converting a C program to use pointers in array and have the same output
这是代码,我无法将其转换为使用指针并具有相同的输出:
#include <stdio.h>
int main() {
int i, s[4], t[4], u = 0;
for (i=0; i<=4; i++)
{
s[i] = i;
t[i] = i;
}
printf("s : t\n");
for (i = 0; i <= 4; i++)
printf("%d : %d\n", s[i], t[i]);
printf("u = %d\n", u);
}```
The output of the code is this:
s : t
0 : 4
1 : 1
2 : 2
3 : 3
4 : 4
u = 0
我的代码如下,但是输出结果不一样,有人可以帮忙吗:
int main() {
int i,
*s[4],
*t[4],
*u=0;
for (i=0; i<=4; i++)
{
s[i] = &i;
t[i] = &i;
}
printf("s:t\n");
for(i=0;i<=4;i++)
printf("%d:%d\n",*s[i],*t[i]);
printf ("u=%d\n", *u);
}
这是一种可能的解决方案,我不确定这是否是您正在寻找的解决方案:
#include <stdio.h>
int main()
{
int i, s[4], t[4], u=0;
for (i=0; i<4; i++)
{
*(s+i) = i;
*(t+i) = i;
}
printf("s:t\n");
for(i=0; i<4; i++)
printf("%d:%d\n",*(s+i),*(t+i));
int *ptrToU = &u;
printf ("u=%d\n", *ptrToU);
}
C 中的数组从 0 开始索引。您的循环有 i<=4
,但必须更改为 i<4
以防止出现 out-of-bounds 错误。
在您的原始代码中,您有:
int *s[4];
这将创建一个包含 4 个指向 int
的指针的数组。问题就变成了,这些指针指向什么?
您的代码:
s[i] = &i;
将每个 int
指针设置为指向变量 i
的内存位置。由于 i
并未更改其内存位置,因此 s[i]
中的每个指针都指向相同的位置。希望这对一些人有所帮助。
这是代码,我无法将其转换为使用指针并具有相同的输出:
#include <stdio.h>
int main() {
int i, s[4], t[4], u = 0;
for (i=0; i<=4; i++)
{
s[i] = i;
t[i] = i;
}
printf("s : t\n");
for (i = 0; i <= 4; i++)
printf("%d : %d\n", s[i], t[i]);
printf("u = %d\n", u);
}```
The output of the code is this:
s : t
0 : 4
1 : 1
2 : 2
3 : 3
4 : 4
u = 0
我的代码如下,但是输出结果不一样,有人可以帮忙吗:
int main() {
int i,
*s[4],
*t[4],
*u=0;
for (i=0; i<=4; i++)
{
s[i] = &i;
t[i] = &i;
}
printf("s:t\n");
for(i=0;i<=4;i++)
printf("%d:%d\n",*s[i],*t[i]);
printf ("u=%d\n", *u);
}
这是一种可能的解决方案,我不确定这是否是您正在寻找的解决方案:
#include <stdio.h>
int main()
{
int i, s[4], t[4], u=0;
for (i=0; i<4; i++)
{
*(s+i) = i;
*(t+i) = i;
}
printf("s:t\n");
for(i=0; i<4; i++)
printf("%d:%d\n",*(s+i),*(t+i));
int *ptrToU = &u;
printf ("u=%d\n", *ptrToU);
}
C 中的数组从 0 开始索引。您的循环有 i<=4
,但必须更改为 i<4
以防止出现 out-of-bounds 错误。
在您的原始代码中,您有:
int *s[4];
这将创建一个包含 4 个指向 int
的指针的数组。问题就变成了,这些指针指向什么?
您的代码:
s[i] = &i;
将每个 int
指针设置为指向变量 i
的内存位置。由于 i
并未更改其内存位置,因此 s[i]
中的每个指针都指向相同的位置。希望这对一些人有所帮助。