这个程序哪错了呀?

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:40:11
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

void input(int *pointer){
int *p,i;
printf("input\n");
for(p=pointer,i=0;i<10;i++)
p[i]=8;

}
void main(){//main fuction.
int *array,*temp=array;

array=(int*)malloc(50*sizeof(int));

input(array);

for(;temp<array+10;temp++)
printf("%d\t",*temp);//output.
}
这个程序在Microsoft Visual C++上编译并不报错,就是执行不出结果.各位大虾给我看看是那出了问题.谢谢!

for(;temp<array+10;temp++)
换顾
for(temp=array;temp<array+10;temp++)

因为你的 int *array,*temp=array;将 temp指向和array相同的地址,而执行array=(int*)malloc(50*sizeof(int));后, array指向的地址已经改变,你的temp指向的地址已经是array以前所指向的地址
所以出错

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

void input(int *pointer){
int *p,i;
printf("input\n");
for(p=pointer,i=0;i<10;i++)
p[i]=8;

}
void main(){//main fuction.
int *array=(int*)malloc(50*sizeof(int));
int *temp=array;
input(array);
for(;temp<array+10;temp++)
printf("%d\t",*temp);//output.
}
这样就可以拉 应该

呵呵 楼上的手都挺快哈!