c语言 动态数组 输入输出不一致,问题出在哪?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 动态数组 输入输出不一致,问题出在哪?相关的知识,希望对你有一定的参考价值。
#include "stdio.h"
#include "malloc.h"
void main()
int num, i;
int * array1 = 0;
int * array2 = 0;
if(array1 == array2)
printf("%s", "array1 == array2\n");
else
printf("%s", "array1 != array2\n");
printf("输入一个整数:\n");
scanf("%d", &num);
// 输入
printf("输入%d个整数:\n", num);
array1 = (int *) calloc(num, sizeof(*array1)); // 动态分配数组
for(i = 0; i < num; i++)
scanf("%d", array1 + i);
printf("再输入%d个整数:\n", num);
array2 = (int *) calloc(num, sizeof(*array2)); // 动态分配数组
for(i = 0; i < num; i++)
scanf("%d", array2 + i);
// 输出
for(i = 0; i < num; i++)
printf("%-4d", *array1 + i);
putchar('\n');
for(i = 0; i < num; i++)
printf("%-4d", *array2 + i);
putchar('\n');
if(array1 == array2)
printf("%s", "array1 == array2\n");
else
printf("%s", "array1 != array2\n");
// 释放
free(array1);
free(array2);
------------------------------------
结果:
array1 == array2
输入一个整数:
5
输入5个整数:
1 2 3 4 5
再输入5个整数:
0 9 8 7 6
1 2 3 4 5
0 1 2 3 4
array1 != array2
这里确实也有问题,谢谢了!
参考技术A printf("%-4d", *array1 + i);=》printf("%-4d", *(array1 + i) ); 或者
=》printf("%-4d", array1[i]);
array2同理
array1 == array2 判断的是两个指针 指向的地址是否相同
你是分别用calloc申请空间,两个指针的值当然会不同,即使数组内容相同。追问
int * array1 = 0;
*array1等价于int型,所以这不是问题所在。不过,依然谢谢了。
嗯,修改过回答了。
C语言关于结构体变量为动态数组赋值问题
C语言关于结构体变量为动态数组赋值问题for(x=0;x<num;x++)
printf("学号:%d\n姓名:%s\n班级:%d\n",array[x].Num+M_1,array[x].Name,array[x].Banji);
不知道为什么每次输出的都是循环最后一次的结果,而不会把全部输入的数据进行输出,小白一个,求大神指教,谢谢
以上是关于c语言 动态数组 输入输出不一致,问题出在哪?的主要内容,如果未能解决你的问题,请参考以下文章