问题描述
考虑一个包含各种变量的结构
我是否可以在不使用其名称(仅地址)的情况下编辑其中的变量?
到目前为止,我似乎无法做到这一点。即使我可以使用*指针导出值,如果*指针=值的for重新编译为编译器错误,也要写一些内容
错误1错误C2679:二进制'=':找不到哪个操作符采用'int'类型的右操作数(或者没有可接受的转换
我尝试过类型转换,但它似乎不起作用!!我能以某种方式做到吗?
这个错误非常清楚地说明了你做错了什么:右侧显然评估为一个整数值,但左侧评估为编译器无法分配整数的类型。原因是你的指针变量是不是合适的类型 - 它必须是指向 int
的指针,或指向int可以转换成的任何其他类型的指针,例如指向 long的指针
或指向 double
的指针。
是的,你可以这样做,但是,大部分时间都不需要(并且不是明智的事情:-))。
请考虑以下代码:
#include < iostream >
使用 命名空间标准;
struct Point
{
int x,y;
};
void dump( const Point& p){cout<< ; p.x<< ,<< p.y<< ENDL; }
int main()
{
Point p;
p.x = 10 ;
p.y = 20 ;
dump(p);
int * pi;
pi =( int *)(( unsigned char *)& p + sizeof ( int )); // 跳过x,获取y地址
* pi = 50 跨度>;
dump(p);
}
输出结果为:
10,20
10,50
pi
指针访问 y
Point
struct
的成员,不使用成员变量名称(使用其计算的地址) )。
Consider a structure with various variables
Is it possible that I edit the variable inside it without using their names (only addresses )?
so far I can't seem to do it. Even if I can export values using *pointer, writing something if the for of *pointer=value resutls to a compiler error
"Error 1 error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion"
I've tried type casting but it doesn't seem to work !! can I do it somehow ?
This error pretty clearly states what you did wrong: the right hand side obviously evaluates to an integer value, but the left hand side evaluates to a type that the compiler can't assign an integer to. The reason is that your pointer variable is not of the appropriate type - it must be pointer to int
, or pointer to any other type that an int can be converted into, e. g. pointer to long
or pointer to double
.
这篇关于c ++结构指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!