zyj1214 发表于 2021-1-7 21:51:17

小甲鱼38讲..动态内存申请问题...

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
        int *ptr=NULL;
        int num,i;
        printf("请输入录入的整数:");   //这里输入数字   1;
        scanf("%d",&num);
       
        ptr =(int*)malloc(num*sizeof(int));//ptr =(int*)malloc(1*sizeof(int))这里是向内存申请了 4 个字节的动态内存..*ptr指向这 4 个字节的内存
       
        for (i=0;i<num;i++)
        {
                printf("请录入第%d个整数:",i+1);
                scanf("%d",&ptr);   //这里的&ptr不是只有 4 个字节的容量吗....为什么我输入10个数字..不会报错...输入11个数字..输出结果会数据异常呢?
       }
        printf("你录入的整数是:");
        for (i=0;i<num;i++)
        {
                printf("%d\n",ptr);
        }
        putchar('\n');
        free(ptr);
        return 0;
       
       
}
这是输入10个数字的结果:
请输入录入的整数:1
请录入第1个整数:1122334455
你录入的整数是:1122334455


--------------------------------
Process exited after 13.53 seconds with return value 0
请按任意键继续. . .

这是输入11个数字的结果:
请输入录入的整数:1
请录入第1个整数:11223344556
你录入的整数是:-1661557332


--------------------------------
Process exited after 8.547 seconds with return value 0
请按任意键继续. . .

jackz007 发表于 2021-1-7 22:07:44

   代码没有问题,是你的输入方法不对,输入的数和数之间要用空格或回车符隔开
   看看我的录入实例:
D:\00.Excise\C>x2
请输入录入的整数:1
请录入第1个整数:1
你录入的整数是:1


D:\00.Excise\C>x2
请输入录入的整数:10
请录入第1个整数:11
请录入第2个整数:12
请录入第3个整数:13
请录入第4个整数:14
请录入第5个整数:15
请录入第6个整数:16
请录入第7个整数:17
请录入第8个整数:18
请录入第9个整数:19
请录入第10个整数:20
你录入的整数是:11
12
13
14
15
16
17
18
19
20

D:\00.Excise\C>
页: [1]
查看完整版本: 小甲鱼38讲..动态内存申请问题...