#include <iostream>
using namespace std;
const int MAX = 4;
int main ()
{
const char *names[MAX] = {
"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
for (int i = 0; i < MAX; i++)
for (int j = 0; j < 8; j++)
{
cout << "Value of names[" << i << "] = ";
cout << *(names[i] + j)<< endl;
}
return 0;
}
输出结果为:
Value of names[0] = Z
Value of names[0] = a
Value of names[0] = r
Value of names[0] = a
Value of names[0] =
Value of names[0] = A
Value of names[0] = l
Value of names[0] = i
Value of names[1] = H
Value of names[1] = i
Value of names[1] = n
Value of names[1] = a
Value of names[1] =
Value of names[1] = A
Value of names[1] = l
Value of names[1] = i
Value of names[2] = N
Value of names[2] = u
Value of names[2] = h
Value of names[2] = a
Value of names[2] =
Value of names[2] = A
Value of names[2] = l
Value of names[2] = i
Value of names[3] = S
Value of names[3] = a
Value of names[3] = r
Value of names[3] = a
Value of names[3] =
Value of names[3] = A
Value of names[3] = l
Value of names[3] = i
1980cpp-array-of-pointers
C 语言的老司机这里要告诉你的是 C++ 的运算符优先级顺序和C的不一样,有细微差别。
int *ptr[3];
由于 C++ 运算符的优先级中,* 小于 [],所以 ptr 先和 [] 结合成为数组,然后再和 int * 结合形成数组的元素类型是 int * 类型,得到一个叫一个数组的元素是指针,简称指针数组。
int *(ptr[3]);
这个和上面的一样,优先级顺序是 * 小于 (),() 等于 []。ptr 先和 [] 结合成为数组,然后再和 int * 结合形成数组的元素类型是 int * 类型,得到一个叫一个数组的元素是指针。
1984cpp-passing-pointers-to-functions
传递指针给函数的过程补充
1983cpp-passing-pointers-to-functions
这是一个求平均数的程序。
1982cpp-pointer-to-pointer
通过查看 var,ptr,*pptr 的地址可以更加清晰的理解多级间接寻址的寻址过程,从结果可以看出这 3 个的地址都是一样的。
运算结果为:
1981cpp-array-of-pointers
char *names[MAX] 这种字符型的指针数组是存储指针的数组,但是在理解字符型指针数组的时候,可以将它理解为一个二维数组,如 const char *names[4] = {"Zara Ali","Hina Ali","Nuha Ali","Sara Ali",} 可以理解为一个 4 行 8 列的数组,可以用 cout << *(names[i] + j)<< endl 取出数组中的每个元素。
输出结果为:
1980cpp-array-of-pointers
C 语言的老司机这里要告诉你的是 C++ 的运算符优先级顺序和C的不一样,有细微差别。
由于 C++ 运算符的优先级中,* 小于 [],所以 ptr 先和 [] 结合成为数组,然后再和 int * 结合形成数组的元素类型是 int * 类型,得到一个叫一个数组的元素是指针,简称指针数组。
这个和上面的一样,优先级顺序是 * 小于 (),() 等于 []。ptr 先和 [] 结合成为数组,然后再和 int * 结合形成数组的元素类型是 int * 类型,得到一个叫一个数组的元素是指针。
这个就不一样了,优先级顺序是 * 小于 (),() 等于 [],() 和 [] 的优先级一样,但是结合顺序是从左到右,所以先是 () 里的 * 和 ptr 结合成为一个指针,然后是 (*ptr) 和 [] 相结合成为一个数组,最后叫一个指针 ptr 指向一个数组,简称数组指针。