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

C 试图将指针地址传递给另一个指针,c,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; } #包括 int main(){ INTA=45; int*int_ptr=&a; char*char

我正在尝试使用以下代码将一个指针的地址传递给另一个指针:

#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;
}
#包括
int main(){
INTA=45;
int*int_ptr=&a;
char*char_ptr;
*char_ptr=*int_ptr;
printf(“字符:%c”,*char\u ptr);
返回0;
}
我编译代码,当我试图运行程序时,我得到了这个错误:
34432分段错误

我怎样才能解决这个问题

谢谢

这里不复制指针,而是复制
int\u ptr
指向
char\u ptr
所指向区域的内容。由于
char*char\u ptr
未初始化,因此会出现分段错误

你可能想写的是

char_ptr = (char *)int_ptr;
而不是

*char_ptr = *int_ptr;

要将指针中包含的地址传递给另一个指针,应使用正则变量赋值

char_ptr = int_ptr;
你所做的是;您正试图将
a
*int\u ptr
)的值分配给
char\u ptr
指向的变量,该变量没有指向任何地方

请注意,您可能需要执行类型转换以消除某些警告

char_ptr = (char*) int_ptr;

charch;char*char_ptr=&ch启用编译器警告!“我如何解决这个问题?”您不接受任何地址,但将值指定给未指定的地址。@Olaf通过字符指针访问整数值是可以的。Visa versa可能会有问题。关于别名,您是对的(对不起,我使用
void*
作为通用指针,所以有时我会忘记
char*
的传统特殊含义)。这正是我想要表达的意思。谢谢你的警告。他作了一些澄清。
char_ptr = (char*) int_ptr;