本文介绍了c ++结构指针的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

考虑一个包含各种变量的结构



我是否可以在不使用其名称(仅地址)的情况下编辑其中的变量?



到目前为止,我似乎无法做到这一点。即使我可以使用*指针导出值,如果*指针=值的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 ++结构指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-24 21:00