C程序分段错误

qq_26509003 2018-03-22 02:42:39
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 1000
void Trans(const int *arry, int NUM, int **p)
{
int i, num = NUM;
*p = (int *)malloc(sizeof(int)*NUM);
if(*p == NULL)
{
perror("malloc fail");
return;
}
for(i=0; i<NUM; i++)
{
*p[i] = arry[--num];
}
}

int main()
{
int NUM, i;
int *p = NULL;
int arry[MAXSIZE];
bzero(&arry, sizeof(arry));

printf("please input NUM(1·1000):\n");
scanf("%d", &NUM);
printf("please input all:\n");
for(i=0; i<NUM; i++)
{
scanf("%d", &arry[i]);
}

Trans(arry, NUM, &p);
for(i=0; i<NUM; i++)
{
printf("arry[%d] = %d\n", i. p[i]);
}
printf("\n");
free(p);
p = NULL;
return 0;
}

编译没有问题,执行后出现错误提示如图

...全文
142 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-03-22
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAXSIZE 1000

void Trans(const int *arry, int NUM, int **p)
{
    int i, num = NUM;
    *p = (int *)malloc(sizeof(int)*NUM);
    if(!(*p))
    {
        perror("malloc fail");
        return;
    }
    for(i=0; i<NUM; i++)
    {
        (*p)[i] = arry[--num];   /*注意改成(*p)[i], *p是一个整体,需要加括号,否则会p和[]先结合*/
    }
}

int main()
{
    int NUM, i;
    int *p = NULL;
    int arry[MAXSIZE];

    bzero(&arry, sizeof(arry));

    printf("please input NUM(1·1000):\n");
    scanf("%d", &NUM);
    printf("please input all:\n");
    for(i=0; i<NUM; i++)
    {
        scanf("%d", &arry[i]);
    }

    Trans(arry, NUM, &p);
    for(i=0; i<NUM; i++)
    {
        printf("arry[%d] = %d\n", i, p[i]);
    }
    printf("\n");
    free(p);
    p = NULL;
    return 0;
}
参考一下吧 给(*p)赋值时需要注意下

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧