●数组指针
所谓数组指针就是一个指向数组的指针,就这么简单。
代码如下:
分别定义一个一维数组和一个数组指针,并打印一系列的地址
int a[5];
int(*arr)[5];
arr = &a;
printf("&a[0]: %p\n", a);
printf("&a : %p\n", &a);
printf("arr : %p\n", arr);
printf("arr+1: %p\n", arr + 1);
printf("&a[0]+1: %p\n", a + 1);
printf("&a+1 : %p\n", &a + 1);
打印截图如下:
举一个例子来感受一下数组指针的用法:
求一串字符串中最长的字符串,需要用到一个二维数组,数组传参,
形参则为数组指针
#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
char* fun(char(*arr)[20], char *max)
{
max = arr[0];
int i = 0;
for (i = 1; i < 5; i++)
{
if (strlen(max) < strlen(arr[i]))
{
max = arr[i];
}
}
return max;
}
int main()
{
char str[5][10] = {
"asdfgh", "qwer", "zxc", "poiuy", "bhtfdes" };
char *p = NULL;
char *max = fun(str, p);
printf("%s\n", max);
return 0;
}
●指针数组
char *arr[10];
顾名思义,就是一个存放多个指针作为数组内容的数组,在表现形式上
与数组指针char(*arr)[20]有些像,要注意区别.