【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.数组指针的使用

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

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

image


二.(首元素地址传参)

image

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

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

image

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

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

代码图示:

image

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

原理:

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

原理图示:

image

代码图示: 

image

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

1.基础部分

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

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

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

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


                      parr3[10]   是 数组 类型


2.拓展部分  

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

image

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

image

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

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.作用与使用演示:

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

使用演示:

image

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

imageimage

相关文章
|
1月前
|
C语言
初阶函数基础例题(1)
初阶函数基础例题(1)
|
2月前
|
算法 C语言
直接插入排序--C语言(附详细代码)(附图详解)
直接插入排序--C语言(附详细代码)(附图详解)
89 0
|
3月前
|
编译器 C语言
C语言——数组和指针 的基础知识(学习分享)(一)
C语言——数组和指针 的基础知识(学习分享)(一)
38 0
|
3月前
|
存储 C语言
C语言——数组和指针 的基础知识(学习分享)(二)
C语言——数组和指针 的基础知识(学习分享)(二)
35 0
|
3月前
|
C语言
【初阶C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)(二)
【初阶C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)(二)
|
3月前
|
C语言
【初阶C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)(一)
【初阶C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)(一)
|
3月前
|
存储 编译器
【C】指针——知识点大全(详细,简洁,含例题)(一)
【C】指针——知识点大全(详细,简洁,含例题)
|
3月前
|
编译器 C语言
【C】数组——知识点大全(简洁,详细)(二)
【C】数组——知识点大全(简洁,详细)
|
3月前
|
存储 C语言
【C】数组——知识点大全(简洁,详细)(一)
【C】数组——知识点大全(简洁,详细)
【C】操作符——知识点大全(简洁,全面)(二)
【C】操作符——知识点大全(简洁,全面)