C++--问题10--数组指针和指针数组
1.数组指针
数组指针本质是指针,是指向数组的指针,代表它是指针,指向整个数组。
2.指针数组
指针数组本质是数组,是指一个数组里面装着指针。
例1:程序输出
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int v[2][10] = {
{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};
int (*a)[10] = v;//数组指针
cout << **a << endl;
cout << **(a+1) << endl;
cout << *(*a+1) << endl;
cout << *(a[0]+1)<< endl;
cout << *(a[1] )<< endl;
return 0;
}
结果如下图:
本题定义一个指针,指向一个10个int元素的数组。a+1代表a指针向后移动1*sizeof(数组大小),所以**(a+1)指向11;a+1向后移动40个字节,*a+1仅针对织一行向后移动4个字节,所以*(*a+1)指向的是2,a[0]代表指针指向第一行其实位置,所以*a[1]的值是11。
(1)一个整型数 int a;
(2)一个指向整型数的指针 int *a;
(3)一个指向指针的指针,它指向的指针是指向一个整型数 int **a;
(4)一个有10个整型数的数组 int a[10];
(5)一个有10个指针的数组,该指针是指向一个整型数的 int *a[10];
(6)一个指向有10个整型数的数组的指针 int (*a)[10];
(7)一个指向函数的指针,该函数有一个整型参数并返回一个整型数 int(*a)(int);
(8)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数 int (*a[10])(int);