重新分配指针会导致错误 我是C++新手,请原谅我的问题似乎是基本的,当我使用这个星时,我不能重新分配一个指针,这是我的代码: int val = 8; int number = 23; int *pointer = &val; *pointer = &number; //<-- error

重新分配指针会导致错误 我是C++新手,请原谅我的问题似乎是基本的,当我使用这个星时,我不能重新分配一个指针,这是我的代码: int val = 8; int number = 23; int *pointer = &val; *pointer = &number; //<-- error,c++,c,pointers,dereference,C++,C,Pointers,Dereference,因此,我的问题是,为什么这是错误的:*指针=&number在代码中 *pointer = &number; //<-- error 是正确的方法。在代码中 *pointer = &number; //<-- error int *pointer = &val; 这是正确的方法 int *pointer = &val; 分手实际上意味着 int* pointer; pointer = &val; 分手实际上意味着 int

因此,我的问题是,为什么这是错误的:*指针=&number

在代码中

 *pointer = &number;    //<-- error
是正确的方法。

在代码中

 *pointer = &number;    //<-- error
int *pointer = &val;
这是正确的方法

int *pointer = &val;
分手实际上意味着

int* pointer;
pointer = &val;
分手实际上意味着

int* pointer;
pointer = &val;

导致错误的原因是您误解了每个变量的类型

int val = 8; // type of `val` is int
int number = 23; // type of `number` is an int
int *pointer = &val; // type of `pointer` is an int *
*pointer = &number;    // type of `pointer` is int *, so type of `*pointer` is int

它不起作用,因为
*指针
取消对指针的引用,所以您给指针分配了一个地址,这不是您想要的。

导致错误的原因是您误解了每个变量的类型

int val = 8; // type of `val` is int
int number = 23; // type of `number` is an int
int *pointer = &val; // type of `pointer` is an int *
*pointer = &number;    // type of `pointer` is int *, so type of `*pointer` is int
它不起作用,因为
*指针
取消对指针的引用,所以您给指针分配了一个地址,这不是您想要的。

当您说

int *pointer
*表示您正在创建指针,您可以将*视为数据类型的一部分。i、 它是指向整数类型的指针。要引用指针本身(在内存中存储地址的类型),只需使用指针的名称,就像使用正则变量一样

int val = 8; // type of `val` is int
int number = 23; // type of `number` is an int
int *pointer = &val; // type of `pointer` is an int *
*pointer = &number;    // type of `pointer` is int *, so type of `*pointer` is int
当您添加*infront时,您正在取消对指针的引用。也就是说,您正在访问指针指向的内存地址中存储的任何内容,在本例中为int

基本上,指针给你一个内存地址,*指针给你存储在那个地址的int

int *pointer
*表示您正在创建指针,您可以将*视为数据类型的一部分。i、 它是指向整数类型的指针。要引用指针本身(在内存中存储地址的类型),只需使用指针的名称,就像使用正则变量一样

int val = 8; // type of `val` is int
int number = 23; // type of `number` is an int
int *pointer = &val; // type of `pointer` is an int *
*pointer = &number;    // type of `pointer` is int *, so type of `*pointer` is int
当您添加*infront时,您正在取消对指针的引用。也就是说,您正在访问指针指向的内存地址中存储的任何内容,在本例中为int


基本上,指针在内存中给你一个地址,*指针给你存储在那个地址的整数。

当你解除一个整数指针的限制时,它就变成一个整数。当你将&添加到一个非指针时,它就变成一个指针。这样做 不好,因为*ptr不是指针,&i是指针

int n = 0;
int *ptr = &n //good,because they are both pointers
int i = 0;
*ptr = &i //bad because only one is a pointer

当您取消对整数指针的引用时,它将变为一个整数。当您将&添加到非指针时,它将变为一个指针。这样做吗 不好,因为*ptr不是指针,&i是指针

int n = 0;
int *ptr = &n //good,because they are both pointers
int i = 0;
*ptr = &i //bad because only one is a pointer

你应该读一本书。这是C语言的基础知识,应该从书中学习,而不是从堆栈溢出中学习。为什么要使用两种语言标签?你用哪种语言编程?@Fred Shmed不是确切的错误消息
错误:从不兼容的int类型分配给int*。
?你应该读一本书。这是C语言的基础知识,应该从书中学习,而不是从堆栈溢出中学习。为什么要使用两种语言标签?您使用哪种语言编程?@Fred Shmed不是确切的错误消息
错误:从不兼容的int类型分配给int*。