问题描述
问题:编写一个程序以将数据从4字节变量复制到数组,反之亦然。 (输入:整数和数组起始地址)
我必须接收一个整数作为输入并将其存储在4字节变量中。 还必须接收数组地址作为输入。
然后将整数值存储在数组中并打印结果,并对它进行相反的处理。
我尝试了以下代码
#include <stdio.h>
int main()
{
int num,arr[]={0};
int *ptr=NULL;
scanf("%d%p",&num,&ptr);
arr[0]=num;
*ptr=num;
printf("%p",ptr);
return 0;
}
解决方法
您可以使用malloc获得有效地址。在这种情况下,我为您的示例分配了一个int大小,打印有效地址,然后可以使用scanf放置该地址。
#include <stdio.h>
#include <malloc.h>
int main()
{
int num,arr[]={0};
int *ptr=NULL;
int *p = (int*)malloc(sizeof(int));
printf("p: %p\n",p);
scanf("%d%p",&num,&ptr);
arr[0]=num;
*ptr=num;
printf("%d",*ptr);
free(ptr);
return 0;
}
,
- 您需要为阵列设置大小。
- 您无法为参数选择一些地址。
代码如下:
#include <stdio.h>
int main()
{
int num,arr[1] = { 0 };
scanf("%d",&num);
arr[0] = num;
printf("%p",&arr[0]);
return 0;
}