【C】指针——知识点大全(详细,简洁,含例题)(二)

简介: 【C】指针——知识点大全(详细,简洁,含例题)

七.数组指针

1.基本概念与形式

数组指针类型:int(*)[10]

1. int arr[10]={1,2,3,4,5};
2. int (*pa)[10]=&arr;  取出的是数组的地址存放到pa中,pa是数组指针变量

2.区分指针数组与数组指针

  • int*p1[10]:指针数组
  • int(*p)[10]:数组指针

3.数组指针的使用

一.(数组传参,数组形式接收)

  • 数组传参传数组名的本质:也是传首元素地址
  • 【数组的地址=首元素的地址=数组的起始位置】


二.(首元素地址传参)

PS:数组名是首元素地址:只有两个例外:sizeof(数组名)/&数组名

*三.(数组指针传参)——较繁琐,在一维数组上用的比较少

八.指针在二维数组的应用

1.常规写法(数组传参,数组形式接收)

代码图示:

2.指针写法(数组传参,数组指针形式接收)

原理:

  • *所以当二维数组的首元素+1时,直接跳过一行,来到下一行
  • *变化以后,可以视作(一维数组)首元素的地址”+j”后,访问数组

原理图示:

代码图示:

九.小总结:区分下列表达式

1.基础部分

int*parr1[10]:指针数组类型

int(*parr2)[10]:数组指针类型

int(*parr3[10])[5]:存放数组指针的数组

     PS: int (*                    ) [5] 是 数组指针 类型,


                      parr3[10]   是 数组 类型


2.拓展部分  

  • (*(void(*) ( ) )0 ) ( );函数类型

  • void(*signal(intvoid(*)(int)))(int)函数声明
  • 可改写为
1. typedef void(*pf_t)(int);
2. 
3. pt_f signal(int,pf_t);

十.数组参数,指针参数要点

1.一维数组传参要点

一.数组形式接收

要点:数组传参本质上传的是地址,所以不用专门创建一个数组接受——不用规定大小

代码演示:

void test1(int arr[]);
void test1(int arr[10];  均可以顺利传参
int main()
{
  int arr[10]={0};
  test1(arr);
  test1(arr);   
}

二.用指针形式接收

代码演示:

void test1(int*arr);
int main()
{
  int arr[10]={0};
  test1(arr); 
}

2.二维数组传参要点

一.数组形式接收

要点:二维数组的列不能省略,即“列”需要规定大小

代码演示:

正确写法
void test1(int arr[3][5]);
void test1(int arr[ ][5]);
错误写法:
void test1(int arr[ ][ ]); 
void test1(int arr[3][ ]); 
int main()
{
  int arr[3][5]={0};
  test1(arr); 
}

二.用数组指针形式接收

要点:必须要用数组指针接收

代码演示:

正确写法:
void test1(int(*arr)[5]);
错误写法:
void test1(int*arr);
int main()
{
  int arr[10]={0};
  test1(arr); 
}

十二.函数指针数组

函数指针数组:int(*   pfArr[4]  )(int,int)

1.作用与使用演示:

函数指针数组作用:可以存放多个【参数相同,返回类型相同】的函数的地址

使用演示:

2. 应用场景:替代switch case语句

相关文章
|
7月前
|
编译器 C语言
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(下)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
44 0
|
7月前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(上)
C语言初阶⑦(指针初阶)知识点+笔试题
45 0
|
6月前
|
C语言
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
|
7月前
|
存储 程序员 编译器
【初阶】C语言指针详解——指针必备的7大知识点
【初阶】C语言指针详解——指针必备的7大知识点
|
7月前
|
存储 C语言
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(中)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
40 0
|
7月前
|
存储 C语言 C++
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(上)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
28 0
|
7月前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(下)
C语言初阶⑦(指针初阶)知识点+笔试题
48 0
|
7月前
|
C语言
C语言:指针典型例题剖析
C语言:指针典型例题剖析
|
7月前
|
存储 C++ 容器
C/C++常见的易模糊知识点(结构体、指针、STL)
C/C++常见的易模糊知识点(结构体、指针、STL)
C/C++常见的易模糊知识点(结构体、指针、STL)