重新分配指针会导致错误 我是C++新手,请原谅我的问题似乎是基本的,当我使用这个星时,我不能重新分配一个指针,这是我的代码: int val = 8; int number = 23; int *pointer = &val; *pointer = &number; //<-- error
因此,我的问题是,为什么这是错误的:*指针=&number在代码中重新分配指针会导致错误 我是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
*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*。
?