2、
数组指针:指的是数组名的指针,即数组首元素地址的指针
int (*a)[4]
指针 数组:即用于存储指针的数组,也就是数组元素都是指针
int* a[4]
1、int(*p)[4];//ptr为指向含4个元素的一维整形数组的指针变量(是指针)
2、int *p[4];//定义指针数组p,它由4个指向整型数据的指针元素组成(是数组)
3、int(*)[4];//实际上可以看作是一种数据类型。也就是第一个(int(*p)[4];)中定义的p的数
eg
int main(void)
{
char *p[]={“TENCENT”,”CAMPUS”,”RECRUITING”};//定义指针数组p,由4个字符串指针组成p[1]指向"TENCENT"
char **pp[]={p+2,p+1,p};//定义指针数组pp,pp[0]指向p[1]的地址
char ***ppp=pp;//定义三重指针ppp,存储pp[0]的地址
printf(“%s”,**++ppp);//指向pp[1]的指针,解引用
printf(“%s”,*++*++ppp);//从右像左,++ppp后指向pp[2],解引用是指向p的指针,对指向p的指针++,并解引用得到p[2]的指针
return 0;
}
3、C++与Java的区别?
- 内存管理:java有垃圾回收机制,jvm管理内存;C++通过new与delete运算符由程序员控制内存的分配与释放;
- 全局变量:Java不在所有类之外定义全局变量,而是在某个类中定义一种公用静态的变量来完成全局变量的功能。
- Java不支持头文件,面C和C++语言中都用头文件来定义类的原型,全局变量,库函数等,这种采用头文件的结构使得系统的运行维护相当繁杂。
- Java不支持宏定义,而是使用关键字final来定义常量,在C++中则采用宏定义来实现常量定义,这不得于程序的可读性.
- 类型转换不同.在C和C++中,可通过指针进行任意的类型转换,常常带来不安全性,而在Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换.
- Java不用goto语句,而是用try-catch-finally异常处理语句来代替goto语句处理出错的功能.
- Java对每种数据类型都分配固定长度.比如,在Java中,int类型总是32位的,而在C和C++中,对于不同的平台,同一个数据类型分配不同的字节数,同样是int类型,在PC机中为二字节即16位,而在VAX-11中,则为32位.这使得C语言造成不可移植性,而Java则具有跨平台性(平台无关性).
- 结构和联合的处理.在C和C++中,结构和联合的所有成员均为公有,这就带来了安全性问题,而在Java中根本就不包含结构和联合,所有的内容都封装在类里面
- Java不再使用指针.指针是C和C++中最灵活,也最容易产生错误的数据类型.由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个C++中的私有成员,从而破坏安全性.而Java对指针进行完全地控制,程序员不能直接进行任何指针操作.
static系统自动赋以0值
全局static变量的初始化在编译的时候进行。在main函数被调用之前初始化,并且,只初始化一次 。
函数static变量在函数中有效,第一次进入函数初始化。以后进入函数将沿用上一次的值。
全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
5、析构函数没有参数列表,无法重载,但是可以重写