Wednesday, June 01, 2005
Some concepts in VC.Net (2)
指针数组
一个数组,如果它的所有元素都是指针类型的数据,我们就称这个数组为指针数组。定义一个数据为指针数组时,只要在定义一般数组时在数组名前面加"*"号即可,具体形式如下
类型标识符 *数组名(常量表达式)
char *p_char[5];
由于[]的优先级高于*,所以不需要将p_char[5]用小括号括起来。
指向指针的指针
一个指针可以指向各种类型的变量,包括指针类型的变量,这样就构成指向指针的指针。
-------------------------------------------------------------------------------
当我们定义了一个结构体类型后,如何定义一个变量为结构体变量呢?我们可以采用下面三种方法:
1。先定义结构体,然后定义结构体变量
struct student
{
int number;
char name[20];
char sex;
int age;
float score;
};
struct student stu1, stu2, stu3;
2。在定义结构体类型的同时定义结构体类型变量
struct student
{
int number;
char name[20];
char sex;
int age;
float score;
}stu1, stu2, stu3;
3。直接定义结构体变量而不定义结构体变量类型
struct
{
int number;
char name[20];
char sex;
int age;
float score;
}stu1, stu2, stu3;
结构体数组:
struct time
{
int year;
int month;
int date;
} time[3];
-------------------------------------------------------------------------------
联合体是指几个不同类型的变量共用一个内存单元的一种数据类型,这样,这种类型的变量可以在一个运算中构成一个整数,在另外一个运算中构成一个实数。
union union_type
{
int itype;
double dtype;
float ftype;
}my_union, your_union;
union union_type his_union, her_union
(注意前面有union)
由于联合体中成员的类型不同,它们需要的内存空间也不一样,但它们占用的是同一个内存空间,所以联合体变量占用的内存空间大小和它的所有成员中占用内存空间最大的成员所占用的空间的大小一样,这样才能容纳所有成员。
-------------------------------------------------------------------------------
枚举类型
enum weekday {mon, tue, wed, thu, fri, sat, sun};
enum color {red, blue, yello, green, black};
enum weekday workday, holliday;
enum color my_color;
enum color {red, blue, yello, green, black} my_color;
对定义枚举类型时大括号中的枚举元素,C和C++语言将它们视为常量,不能改变它们的值。
系统在处理枚举元素常量时,自动将它们和自然数及零0, 1, 2, 3,...一一对应,即,第一个元素的值为0,依此类推。当然我们也可以指定各个元素的值:
enum color {red = 5, white, blue = 3, yello = 1, green, black};
enum color mc;
mc = red;
mc = green;
在上例中,red=5, white=6, blue=3,yellow=1,green=2,black=3
-------------------------------------------------------------------------------
使用C++,你可以重新定义大多数内部运算符的函数,这些函数可以基于全局方式下或类方式下进行重定义或重载,重载运算符是用函数来实现的,它们可以是成员函数也可以是全局函数。
一个重载运算符的名称是operatorx,其中x是出现载下表中的运算符。例如,要重载一个加法运算符,你可以定义一个函数叫做operator+。同样地,重载加/赋值运算符(+=),可以定义一个函数叫做operator+=。
, 逗号
! 逻辑非
!= 不等
% 取模
%= 取模/赋值
& 按位AND
& 取地址
&& 逻辑和
&= 按位和/赋值
() 函数调用
* 乘法
* 指针间接引用
*= 乘法/赋值
+ 加法
+ 单目加
++ 增1
+= 加法/赋值
- 减法
~ 单目取反
-- 减1
-= 减法/赋值
-> 成员选择
->* 指向成员的指针选择
/ 除法
/= 除法/赋值
< 小于
<< 左移
<<= 左移/赋值
<= 小于等于
= 赋值
== 等于
> 大于
>= 大于/赋值
>> 右移
>>= 右移/赋值
[] 数组下标
^ 异或
^= 异或/赋值
| 按位或
|= 按位或/赋值
|| 逻辑或
~ 求补
delete
new
一个数组,如果它的所有元素都是指针类型的数据,我们就称这个数组为指针数组。定义一个数据为指针数组时,只要在定义一般数组时在数组名前面加"*"号即可,具体形式如下
类型标识符 *数组名(常量表达式)
char *p_char[5];
由于[]的优先级高于*,所以不需要将p_char[5]用小括号括起来。
指向指针的指针
一个指针可以指向各种类型的变量,包括指针类型的变量,这样就构成指向指针的指针。
-------------------------------------------------------------------------------
当我们定义了一个结构体类型后,如何定义一个变量为结构体变量呢?我们可以采用下面三种方法:
1。先定义结构体,然后定义结构体变量
struct student
{
int number;
char name[20];
char sex;
int age;
float score;
};
struct student stu1, stu2, stu3;
2。在定义结构体类型的同时定义结构体类型变量
struct student
{
int number;
char name[20];
char sex;
int age;
float score;
}stu1, stu2, stu3;
3。直接定义结构体变量而不定义结构体变量类型
struct
{
int number;
char name[20];
char sex;
int age;
float score;
}stu1, stu2, stu3;
结构体数组:
struct time
{
int year;
int month;
int date;
} time[3];
-------------------------------------------------------------------------------
联合体是指几个不同类型的变量共用一个内存单元的一种数据类型,这样,这种类型的变量可以在一个运算中构成一个整数,在另外一个运算中构成一个实数。
union union_type
{
int itype;
double dtype;
float ftype;
}my_union, your_union;
union union_type his_union, her_union
(注意前面有union)
由于联合体中成员的类型不同,它们需要的内存空间也不一样,但它们占用的是同一个内存空间,所以联合体变量占用的内存空间大小和它的所有成员中占用内存空间最大的成员所占用的空间的大小一样,这样才能容纳所有成员。
-------------------------------------------------------------------------------
枚举类型
enum weekday {mon, tue, wed, thu, fri, sat, sun};
enum color {red, blue, yello, green, black};
enum weekday workday, holliday;
enum color my_color;
enum color {red, blue, yello, green, black} my_color;
对定义枚举类型时大括号中的枚举元素,C和C++语言将它们视为常量,不能改变它们的值。
系统在处理枚举元素常量时,自动将它们和自然数及零0, 1, 2, 3,...一一对应,即,第一个元素的值为0,依此类推。当然我们也可以指定各个元素的值:
enum color {red = 5, white, blue = 3, yello = 1, green, black};
enum color mc;
mc = red;
mc = green;
在上例中,red=5, white=6, blue=3,yellow=1,green=2,black=3
-------------------------------------------------------------------------------
使用C++,你可以重新定义大多数内部运算符的函数,这些函数可以基于全局方式下或类方式下进行重定义或重载,重载运算符是用函数来实现的,它们可以是成员函数也可以是全局函数。
一个重载运算符的名称是operatorx,其中x是出现载下表中的运算符。例如,要重载一个加法运算符,你可以定义一个函数叫做operator+。同样地,重载加/赋值运算符(+=),可以定义一个函数叫做operator+=。
, 逗号
! 逻辑非
!= 不等
% 取模
%= 取模/赋值
& 按位AND
& 取地址
&& 逻辑和
&= 按位和/赋值
() 函数调用
* 乘法
* 指针间接引用
*= 乘法/赋值
+ 加法
+ 单目加
++ 增1
+= 加法/赋值
- 减法
~ 单目取反
-- 减1
-= 减法/赋值
-> 成员选择
->* 指向成员的指针选择
/ 除法
/= 除法/赋值
< 小于
<< 左移
<<= 左移/赋值
<= 小于等于
= 赋值
== 等于
> 大于
>= 大于/赋值
>> 右移
>>= 右移/赋值
[] 数组下标
^ 异或
^= 异或/赋值
| 按位或
|= 按位或/赋值
|| 逻辑或
~ 求补
delete
new