一、指针数组
我们 类比一下:
整型数组 - 存放整型数据的数组 (数组中的每个元素是整型类型)
字符数组 - 存放字符数据的数组 (数组中的每个元素是字符类型)
指针数组 - 存放指针的数组(数组中的每个元素是指针型)、
int arr[10]; 整型数组 希望有一个数组,数组有4个元素, 每个元素是整型指针
int* arr[4]; 每个元素是整型指针,所以是指针数组
char ch[5];//字符数组
double data(4];浮点型数组
指针数组呢--------是存放指针的数组。
1.指针数组模拟⼆维数组
#include <stdio.h>
int main()
{
int arr1[] = {1,2,3,4,5};
int arr2[] = {2,3,4,5,6};
int arr3[] = {3,4,5,6,7};
//数组名是数组⾸元素的地址,类型是int*的,就可以存放在parr数组中
int* parr[3] = {arr1, arr2, arr3};
int i = 0;
int j = 0;
for(i=0; i<3; i++)
{
for(j=0; j<5; j++)
{
printf("%d ", parr[i][j]);
}
printf("\n");
}
return 0;
}
parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数 组中的元素。
上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的。
二、字符指针变量
在指针的类型中我们知道有⼀种指针类型为字符指针 char* ;
代码 const char* pstr = "hello bit."; 特别容易让同学以为是把字符串 hello bit 放
到字符指针 pstr ⾥了,但是本质是把字符串 hello bit. ⾸字符的地址放到了pstr中。
char* p ="abcdef";
//不是把字符串abcdef\0存放在p中,而是把第一个字符的地址存放在p中
//printf("%c n",*p);
三、数组指针变量
1. 数组指针变量是什么?
之前我们学习了指针数组,指针数组是⼀种数组,数组中存放的是地址(指针)。
数组指针变量是指针变量?还是数组?
答案是:指针变量。
类比一下:
• 整形指针变量: int * pint; 存放的是整形变量的地址,能够指向整形数据的指针。
• 浮点型指针变量: float * pf; 存放浮点型变量的地址,能够指向浮点型数据的指针。
那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。