试图将指针地址传递给另一个指针

时间:2015-09-18 13:36:08

标签: c

我试图使用下面的代码将一个指针的地址传递给另一个指针:

#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

我该如何解决?

由于

2 个答案:

答案 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;