指针数组&数组指针

Posted by ZhengYang on 2016-07-10

指针数组:指针构成的数组,数组中的每个元素都是一个指针。int *p1[10]。

数组指针:是一个指针,该指针指向一个数组,数组中的元素为int。int (*p2)[10]。

[]的优先级高于*,p1先与[]结合,构成一个数组,数组名为p1;int*修饰数组的内容,即每个数组的元素。

()优先级高于[],p2先与*结合,构成一个指针,指针名为p2;int []修饰的是指针p2所指的内容。

Entropy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
using namespace std;
void main()
{
char *a[] = { "work","at","alibaba" };
char **p = a; //p指向的是第一层的首地址
cout << p << endl; //指针数组a的首地址
cout << *p << endl; // work
//注意这里输出的不是w的地址,而是work
//指针p指向字符串常量"work",即"work"字符串的首地址,
//c++为兼容c,当输出常量字符串的首地址时,直接输出该字符串。
cout << **p << endl; //w
cout << *(p++) << endl; // 第1行第1列地址,但因为是字符串常量,故输出work
cout << *p++ << endl; // 第1行第2列地址,at
cout << a[2] << endl; // alibaba
system("pause");
return 0;
}