回 帖 发 新 帖 刷新版面

主题:C语言输出结果和自己想的不是很一样。。。

#include<stdio.h>
int do_what(int x,int y){
char t;
t=x;
x=y;
y=t;
return t+y;
}
int main(){
int u[]={19,8,510,0x6,123,4,13,2,17,0};
char a=522;
char b=4;
int i=0;
int *y;
int *z;
int *w;
w=u;
y=&a;
z=&b;
if(w=z) w==z;
printf("[1]: %d %d\n",do_what(u[2],u[3]),w[0]);
for(i=0;i<5;i++)   
printf("Pos: %u %d\n",i,*(w+i));
printf("\n");
return 0;
}我觉得最后显示的应该是u里面的一些数字,为什么最后显示的却是-17404之类的呢?

回复列表 (共3个回复)

沙发

if(w=z) w==z;
这里,我没明白你的意图,把z赋给w,那么后面你循环的时候w+i输出的就明显不是数组u的内容了

板凳

[code=c]
#include<stdio.h>
int do_what(int x,int y){
char t;
t=x;
x=y;
y=t;
return t+y;
}
////////////////////////////没看懂你的函数要干什么
int main(){
int u[]={19,8,510,0x6,123,4,13,2,17,0};
char a=522;
char b=4;
int i=0;
int *y;
int *z;
int *w;
w=u;
y=&a;
z=&b;
if(w=z) w==z;////////////////////////这里你是不是想写if(w==z) w=z;
printf("[1]: %d %d\n",do_what(u[2],u[3]),w[0]);
for(i=0;i<5;i++)   
printf("Pos: %u %d\n",i,*(w+i));
printf("\n");
return 0;
}
[/code]

3 楼

我觉得应该是搞混了*w和w
w和z无论如何不可能相同,退一步讲,如果相同了,赋值还有啥意义啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册