這是代碼,我無法將其轉換為使用指標并具有相同的輸出:
#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);
}
uj5u.com熱心網友回復:
這是一種可能的解決方案,我不確定這是否是您正在尋找的:
#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以防止越界錯誤。
在您的原始代碼中,您有:
int *s[4];
這將創建一個包含 4 個指標的陣列int。問題變成了,這些指標指向什么?
你的代碼:
s[i] = &i;
將每個int指標設定為指向變數的記憶體位置i。由于i沒有更改其記憶體位置,因此每個指標都指向s[i]相同的位置。希望這會有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/480188.html
下一篇:*&Var-1.0f是什么意思?
