【发布时间】:2015-12-13 05:18:40
【问题描述】:
我正在尝试通过函数将字符从数组复制到字符指针。以下是我的代码:
#include<stdio.h>
void pass(void* arg){
char arr[1];
arr[0]='X';
memcpy((char *)arg,arr,1);
}
void main(){
char *buf=malloc(sizeof(char));
pass(buf);
printf("%c",buf);
free(buf);
}
这里,指针buf 打印一个垃圾值。我尝试了上述程序的反向如下:
#include<stdio.h>
void pass(void* arg){
char arr[1];
memcpy(arr,(char *)arg,1);
printf("%c",arr[0]);
}
void main(){
char *buf=malloc(sizeof(char));
buf[0]='X';
pass(buf);
free(buf);
}
这是成功的,arr[0] 将值打印为 X。 有人能解释一下为什么第一个案例会失败吗?
【问题讨论】:
-
将警告旋钮调高一个档次。
标签: c arrays pointers memory memcpy