数组指针,本质是一个指针,是一个指向数组的指针。
指针数组,本质是一个数组,是一个其中每个元素都是指针的数组。
数组指针的定义:int (*p)[5] ;
指针数组的定义:int *p[5] (或int *(p[5]));
数组指针的用法:
#include <stdio.h>
void main(void)
{
//数组指针的用法
int (*a1)[10];
int b[10] = {1,2,3,4,5,6,7,8,9,0};
a1 = &b;
printf("b = %d\n", *a1[0]);
}
指针数组的用法:
#include <stdio.h>
void main(void)
{
//指针数组的用法
int *a2[10];
int b[10] = {1,2,3,4,5,6,7,8,9,0};
a2[0] = &b[0];
printf("b = %d\n", *(a2[0]));
}
此外,若想定义一个字符串数组来存放字符串并想用指针访问它,可如下所示:
#include <stdio.h>
void main(void)
{
char a[10][10] = {"a","b","c","d","e","f","g","h","i","j"};
char *p[10];
int i = 0;
for(i=0;i<10;i++)
{
p[i] = a[i];
}
for(i=0;i<10;i++)
{
printf("a = %s\n", p[i]);
}
}
其中a[10][10]中,第一个10是字符串个数,第二个10是字符串长度。