小甲鱼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
请按任意键继续. . .
代码没有问题,是你的输入方法不对,输入的数和数之间要用空格或回车符隔开
看看我的录入实例:
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]