一 二元数组怎样用指针表示?
**p 1
*p[n] 2
关于1,*p是对p指针的一级定义,前面再加个星号,则是把p指针再做为一个指针变量的值,**p是p指针的指针。在数组中,*p是一维数组(可以理解为数组的一行),而这许多行又是许多个指针,这是可在前面再加个星号,表示这许多个一维数组又组成一个一维数组,即构成二维数组,而2就是对这个表示方法的详细展示。
从而
p=&a[0][0]
表示第一行第一个数
p=&a[0]
表示第一行的所有数
二 一个小细节
p++ 1
p+1 2
关于1,是a[0][0],a[0][1],a[0][2]……
关于2,是a[0],a[1],a[2],a[3]……
这个在for循环中有用
三 字符串指针变量(字符指针指向一个字符串)
数组形式
char * name[ ];
字符串变量形式
char * str="good";
要注意的是,对于字符串指针变量,char *p表示第一个字符,char **p表示第一个字符的第一个字母。
四 函数的指针
int(*p) (int, int);
……
p=max;
这是一个指针,它可以指向所有二元函数,但他返回的是一个整型值。
五 指针函数
int *p (int,int);
这是一个函数,但他的不一般在于它返回的是一个指针。
六 数组的指针(二维数组)
int (*p) [4];
前面已经写过,是许多一维数组的指针 。
七 指针数组
int *p[4];
这是一个数组,但它的不一般在于它的所有 元素是指向整形数据的指针。
(有括号则表示强调这是一个指针)
八 变量的引用
通俗说,就是给变量一个别名,而且是一对一,即别名唯一对应一个变量,且二者变化同步
int a;
int&b=a;
b的值改变,a的值也随之改变。&是引用声明符。
注意 只能引用变量,且引用只有声明,没有定义。
这个语法在函数形参和实参的运用中有用;
void sort(int&,int&,int&);//声明
int a,b,c;
……
}
void sort(int &i,int &j,int &k)
{
}
在这里,形参就是实参的引用,形参变化 ,实参也会跟着变化。
九 用户自定义数据类型
什么是结构?
结构是信息的有价值组合
结构是数据的有机组合。
(1)结构体类型
类似定义变量
int a;
struct Student;//自定义结构体变量
变量类型和变量名称之间是抽象和具象的关系
当然,这个数据结构有许多成员,叫做域,
struct Student
{
char name;
char sex;//这里面的所有成员构成域表
……
};//这里要加分号,在后面可直接加变量名称 student1,student2;
即在声明类型同时定义变量。
自己的一点体会,还望各位大佬指正。