从int*到int的转换无效
Invalid conversion from int* to int
我正在自学指针,想知道传递地址的正确方法是什么?
int main(){
int kevin = 10,tiu,gana;
int *kevinpointer;
kevinpointer = &kevin;
tiu = kevin;
gana = &tiu;
cout << "The value of Kevin is: ";
cout << kevin << endl;
cout << "The address of Kevin is: ";
cout << kevinpointer << endl;
cout << "The address of KevinPointer is: ";
cout << *kevinpointer << endl;
cout << "The value/address of tiu is: ";
cout << tiu << endl;
cout<< "The address of gana is: ";
cout << gana << endl;
}
我在"gana=&tiu;">从int*到int[f-permission]的转换无效时遇到错误。
您将变量gana
定义为具有类型int
int kevin = 10,tiu,gana;
但是您正试图将int *
类型的对象分配给它
gana = &tiu;
如果您将变量定义为具有类型int *
int kevin = 10,tiu, *gana;
那么这个语句
gana = &tiu;
将是正确的。
考虑到这些报表
cout << "The address of KevinPointer is: ";
cout << *kevinpointer << endl;
//...
cout<< "The address of gana is: ";
cout << gana << endl;
是错误的。应该有
cout << "The address of KevinPointer is: ";
cout << &kevinpointer << endl;
//...
cout<< "The address of gana is: ";
cout << &gana << endl;
gana
是int
,而您正试图将其用作int*
。将前两行更改为:
int kevin = 10, tiu;
int *kevinpointer, *gana;
程序应该编译。然而,您有这样的片段:
cout<< "The address of gana is: ";
cout << gana << endl;
这没有任何意义。变量gana
不能保存自己的地址。这将要求它同时是int*
和int**
,这没有任何意义。此代码应为:
cout << "The address of tiu is: " << gana << endl;
指针是而不是整数。它们不兼容。
为了强制从指针中获取整数,请使用显式强制转换。
gana = (int)&tiu;
此外,标准并没有说明sizeof(int) == sizeof(void *)
。如果要使用大小等于指针的整数类型,则应使用intptr_t
或uintptr_t
,后者位于<stdint.h>
中。
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度