指针
void指针
一般来说指针可以指向的数据类型必须和定义的指针的类型匹配,在不同的赋值类型之间赋值是错误的,比如
int a = 5;
char *p =a;
用void修饰的指针可以只想任何的数据类型。但是void修饰的指针在指向指针时,必须强制转换,比如
int a = 5;
int *p1=&a;
void *p2=p1;
int *p4=(int *)p2;
char *p =a;
const指针
1.关键字const放在指针类型前面申明一个指向常量的指针,此时不可以通过指针的操作改变它指向的数据,但是至真可以指向其他的数据;
2.关键字const放在*和指针名的中间,申明一个指针常量,此时指针本身的值不能发生改变,也不能指向其他的数据。
3.关键字const放在指针类型前面和*和指针名的中间,则申明了一折指向常量的常指针。
eg1:下列代码输的的值为?
int a = 5;
const int*p1 = &a;
*p1 = 6;
cout << a;
A:5 B:6 C:编译错误
答案:
eg2:下列代码输的的值为?
int a = 5,b = 6;
int* const p1 = &a;
p1 = &b;
cout << *p1;
A:5 B:6 C:编译错误
答案:
指针与数组
指针数组VS数组指针
int(*p)[5]; //表示定义了一个指向数组的指针p,数组的元素有5个,类型为整形
int *p[5]; //表示定义了一个指针数组p,数组的元素有5个,类型为整形指针