[C语言] 关于指针数组和数组指针的初识

一. 指针数组与数组指针

1.指针数组

  指针数组,从字面意思上可以看出,这是一个数组类型,数组元素为存放指针。

// []优先级高于* 所以它是一个数组 其次才是指针
int a, b, c;
int *br[3] = { &a, &b, &c };

2.数组指针

1). 数组指针的概念

  数组指针,指向数组的指针。

int ar[3] = { 1, 2, 3 };
// 一个能指向数组中有三个元素的指针
int (*p)[3] = &ar;

2). 数组指针的一般定义形式

我们通常通过typedef对数组指针进行重定义

1>.先定义数组类型,根据类型定义指针变量

// 定义一个数组
int a[10] = { 0 }; 

// 1.先定义数组类型,根据类型定义指针变量
typedef int A[10];	// 代表数组类型,步长为10
// 定义数组指针类型
// A 代表10个元素的数组类型 
// *p 代表指针
// A *p 代表数组直至
A* p = &a;
// 原理
// p = &a;
// *p = *&a -> a
// (*p)[i] = a[i]

2>.先定义数组指针类型,根据类型定义变量(常用)

// () 和 [] 优先级一样,结合律从左向右
// ()有指针,它是一个指针
// []它是指向数组的指针,它有typedef,所以它是一个数组指针类型
typedef int(*P)[10];

P q = a;

3>.直接定义数组指针变量

// () 和 [] 优先级一样,结合律从左向右
int (*q)[10] = { 0 };

你可能感兴趣的:(c语言基础,c语言,指针)