1.结构体左右值
struct People{
char name[10];
int age;
float height;
} ztz1;
以下是错误的
ztz1.name="Tim"
错误原因 “Tim”是常量字符串,在sram常量区,左边是ztz1.name是位于变量区的地址(Location Value)左值,不应该被赋值。应该修改为
struct People{
char *name;
int age;
float height;
} ztz1;
ztz1.name="Tim"
此时ztz1.name是(register value)右值,所以可以被赋值。
也可以在初始化时赋值,如下
struct People{
char name[10];
int age;
float height;
} ztz1={“Tim”,15,160.0};
此时也是针对右值赋值。
准确理解左右值,这是个经典例子。
2.union巧用
union Myunion{
float f; //4 byte长度
byte b[4];
} mu;
mu.f=1.60
##接下来我们可以用byte方法读取f在内存中的表示方法
for(int i=0;i<4,i++){
mu.b[i]
}
3 arduino中类的声明this是指针与java不同,java中this是实力
class People{
private:
String _name;
public:
void setName(String);
};
##函数实现
void People::setName(String name){
this->_name=name
}
点评,注意和java的习惯区别,本质思想是一致的。
4.类和实例对象
在java中类的方法以及静态属性都是在类被调用的开始初始化的,其中的方法是所有实例共享的,私有属性是在实例中单独保存的