我试图使用下面的代码将一个指针的地址传递给另一个指针:
#include <stdio.h>
int main() {
int a = 45;
int *int_ptr = &a;
char *char_ptr;
*char_ptr = *int_ptr;
printf("char: %c", *char_ptr);
return 0;
}
我编译代码,当我尝试运行该程序时,出现此错误:34432 segmentation fault
我该如何解决?
由于
答案 0 :(得分:3)
*char_ptr = *int_ptr;
此处不复制指针,但复制int_ptr
指向char_ptr
指向的区域的内容。由于char* char_ptr
未初始化,因此会出现细分错误。
你可能想写的是
char_ptr = (char *)int_ptr;
而不是
*char_ptr = *int_ptr;
答案 1 :(得分:1)
要将指针中包含的地址传递给另一个指针,您应该使用常规变量赋值;
char_ptr = int_ptr;
你做的是什么;您正尝试将a
(*int_ptr
)的值分配给char_ptr
指向的变量,该变量未指向任何位置!
请注意,您可能需要进行类型转换以消除某些警告;
char_ptr = (char*) int_ptr;