刚上大学的时候学的是c++编程,后来一直没怎么弄明白,转而学习C语言开发单片机系统。研究生后,逐渐开始进入到嵌入式编程,因为内容太杂而不得放弃,开始学习软件编程,主要是中C#和JAVA。几番项目下来,逐渐弄懂了嵌入式编程各个环节的关系,所以又想重新学习以下嵌入式编程。我选择linux移植的模式,linux的优点不再多说了,开发ARM系统,我自己设想摄像了两套方案:
其一,移植linux+QT的模式;
其二,移植android系统。
android的软件开发非常简便,只要又java基础,一般人2个星期上手问题不大,可是其系统的定制还是比较麻烦的,而且手头上没有那么好的开发环境,目前我只有2440开发板,移植android显然是有难度的,也没有必要。所以选择了第一种开发方案。QT编程用到了C++和C的东西,作为基础语言,还是要温习一下的,开发过程中,发现有些符号理解的不清晰了,这里缕清一下,方便后面的开发。
“*” “&” “->” “.”这四个符号要合在一起说明,前三个都是和指针相关的操作,指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据。*号定义一个指针,如:int* point; 定义了一个指向整型数据的指针。&号读作“什么的地址”,它表示返回的是变量在内存中的地址而不是变量本身的值。比如&number,读作number的地址。那么point=&number;表示什么呢?很显然,就表示把number的地址赋给point指针。看下一段代码:
int number=5;
int* point;
point=&number;
比较以下以下代码:
int number=5;
int* point;
*point=number;
显然*point的值是一样的,都是5.
关于动态分配内存的方法清参照http://www.cppblog.com/Lee7/archive/2007/08/08/29555.html里面的描述,因为本文主要目的是解释几种符号的区别,这里不再对指针具体操作赘述。
指针操作类用到了->符号,看下面的例子:
class MyClass
{
public:
int m_Number;
char m_Character;
};
void main()
{
MyClass *pPointer;
pPointer = new MyClass;
pPointer->m_Number = 10;
pPointer->m_Character = 's';
delete pPointer;
}
对比一下下面的程序
class MyClass
{
public:
int m_Number;
char m_Character;
};
void main()
{
MyClass pPointer;
pPointer = new MyClass;
pPointer.m_Number = 10;
pPointer.m_Character = 's';
}
先看第二段代码,MyClass pPointer;pPointer = new MyClass;实例化类MyClass的一个对象,.符号表示操作类中的变量或者方法(函数)。再看第一段代码,MyClass *pPointer;pPointer = new MyClass;定义了一个类指针,而且动态分配了一个空间,这时候pPointer是类吗?不,它是一个指向类的指针。这时候就不能用.符号操作了,而是使用->符号获取变量和方法(函数)。最后不能忘记删除动态分配的内存空间,不然会造成内存的溢出。
:符号表示继承,::符号表示构造类里面的方法。看下面的代码:
class car{
void car(){
return car;
}
}
class bus{
void car(){
return hus;
}
}
benchi::car():car 表示benchi继承了car类,并构造了car类中的car()方法,而不是bus类里面的方法。