首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

不知道错在哪儿了啊

2013-03-19 
不知道错在哪里了啊??#include stdio.h#include stdlib.hint arr1(int n,int *arr){int i0arr(int*

不知道错在哪里了啊??

#include <stdio.h>
#include <stdlib.h>
int arr1(int n,int *arr)
{
    int i=0;
    arr=(int*)malloc(n*sizeof(int));
    printf("please input the elements\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",arr+i);
    }
    return ;
}
void main()
{
    int *arr,n,i;
    printf("please input the num of elements:");
    scanf("%d",&n);
    arr1(n,arr);
    for(i=0;i<n;i++)
        printf("%d",arr[i]);
    system("pause");
}

[解决办法]
对你的代码改动了两个地方

#include <stdio.h>
#include <stdlib.h>
int *arr1(int n,int *arr)     //这里有改动
{
    int i=0;
    arr=(int*)malloc(n*sizeof(int));
    printf("please input the elements\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",arr+i);
    }
    return arr;   //这里即使按照你原来的定义,也应该有个int型返回值
}
int  main()
{
    int *arr,n,i;
    printf("please input the num of elements:");
    scanf("%d",&n);
    arr=arr1(n,arr);   //这里也有改动
    for(i=0;i<n;i++)
        printf("%d",arr[i]);
    system("pause");
    return 0;
}

做出这样的改动是因为:
    一级指针和二级指针在做形参时的不同:指针用作形参,改变指针地址则值不能传回,改变指针内容而地址不变则值可以传回(特殊情况:改变指针地址采用返回值也可以传回地址);
对于一级指针,做形参时传入地址,如果函数只改变该指针内容,OK,该指针可以正常返回;
如果函数改变了指针地址,除非返回该指针,否则该指针不能正常返回,函数内对指针的操作将无效

热点排行
Bad Request.