程序代码:
#include<stdio.h>
int * sort(const int * const Array, int size);
int * sort(const int * const Array, int size)
{
int line[200]; //函数退出时,会被释放掉,而且200也没有初始化
int i,j,k;
int *p=line;
for(i=0;i<size;i++)
line[i]=*(Array+i);//越界操作
for(i=0;i<size-1;i++){//只对200个元素的前10个排序了, 后面的190个没排序。
for(j=0;j<size-i-1;j++){
if(line[j]>line[j+1]){
k=line[j];
line[j]=line[j+1];
line[j+1]=k;}}}
return p;//函数退出时,line释放掉了
}
main()
{
int x[10],i=0,*p;//没有初始化
for(i=0;i<10;i++)
printf("%d",sort(p,10));//格式匹配错误 %d --- int*
}
你错误很多··,思维很混乱,总结下错误:
1. 变量定义未初始化就使用。
2. 指针变量也未初始化就使用,出现野指针,错误很严重
3. 输入格式不匹配。
4. 对局部变量还不够了解。
程序代码:
#include<stdio.h>
void sort( int* const Array, int size)
{
int i,j,k;
for(i=0;i<size-1;i++)
{
for(j=0;j<size-i-1;j++)
{
if(Array[j]>Array[j+1])
{
k=Array[j];
Array[j]=Array[j+1];
Array[j+1]=k;
}
}
}
}
int main(void)
{
int x[10] ={1,34,5,7,7,23,4,56,7,3},i=0,*p = x;
sort(p,10);
for(i=0;i<10;i++)
printf("%d ",p[i]);
getchar();
return 0;
}