首页 > 其他分享 >C语言09-指针(指针数组、数组指针、字符指针),值传递和引用传递,指针和函数,注释写法

C语言09-指针(指针数组、数组指针、字符指针),值传递和引用传递,指针和函数,注释写法

时间:2024-04-11 20:15:13浏览次数:23  
标签:字符 arr 函数 int 传递 数组 指针

第 12 章 指针 pointer

12.3 指针和数组

① 数组名

可以把 数组名 当做是存储了首元素地址的常量。
// arr 的类型表示为 int [5]
int arr[5] = {10,20,30,40,50};

② 指针数组

指针数组(Pointer Array)是一个数组,其中的每个元素都是指针。
int num1=10,num2=20,num3=30;
// ptr_arr 的类型表示为 int *[3]
int *ptr_arr[3] = {&num1, &num2, &num3};

③ 数组指针

数组指针(Array Pointer)是一个指针,它指向一个数组。
数组指针指向的是【整个数组的地址】而不是第一个元素的地址,虽然二者值是相同的,但在运算中会表现出不同。
int arr[5] = {10,20,30,40,50};
// arr_ptr 的类型表示为 int (*)[5]
int (*arr_ptr)[5] = &arr;

④ 字符指针

1. 字符指针用来表示字符串,可以将字符串字面量直接赋值给字符指针,也可以将字符数组名赋值给字符指针。
2. 字符指针可以重新赋值
3. 字符指针如果指向的是【字面量常量】,不能通过字符指针修改里面的字符

总结:

数据类型 sizeof 计算结果 +1 的值 * 取值(解引用) 能否重新赋值(可变性)
数组名 元素类型[] 整个数组的存储长度 下一个元素地址 首元素的值
指向首元素指针 元素类型* 地址的存储长度 下一个元素地址 首元素的值
数组指针 元素类型 (*)[] 地址的存储长度 越界(数组后面) 整个数组

12.4 值传递和引用传递

引用传递:

① 变量赋值过程中

引用传递: 如果等号的右值是【指针、地址、数组名】,称为引用传递

② 函数传参过程中

引用传递: 如果【实参】是【指针、地址、数组名】,称为引用传递

scanf:将 num 的地址传入 scanf 函数(引用传递), scanf 函数内部可以把 num 的值给改掉

12.5 指针和函数

① 指针函数

1. 指针函数是个函数,返回值是【指针或地址】
2. 指针函数的返回值【不要指向局部变量】(函数调用结束局部变量就销毁),可以指向静态局部变量。

② 函数指针

1. 函数名
   函数名特定情况下可以视为【指向函数代码区域指针】
   函数名、*函数名、&函数名  ———三者等价
   函数名的类型: 返回类型 (参数类型,参数类型,参数类型),如 double (int,int)
   
2. 函数指针
   是个指针,指向一个函数
   通过函数指针来调用函数, 函数指针名 和 *函数指针名 等价

③ 回调函数 callback

1. 如果函数的参数要求还是函数,【作为参数的函数】称为回调函数
2. 【接收回调函数的形参】需要是【函数指针】

注释:

一种标准的注释形式,可以直接转换为文档;如下:

/**
 * @brief  (意思:摘要)
 * @param	(意思:参数)
 * @param
 * @param
*/

标签:字符,arr,函数,int,传递,数组,指针
From: https://www.cnblogs.com/petard/p/18129935

相关文章

  • Java创建数组、赋值的四种方式,声明+创建+初始化 详解
    Java创建数组、赋值的四种方式,声明+创建+初始化详解@目录一、创建数组的四种方式二、详解三、数组存储的弊端一、创建数组的四种方式以int数据类型为例@TestpublicvoidtestNewArray(){//创建数组//法一int[]arr1=newint[]{1,2,3,4,5};System.ou......
  • Java中Array.sort()的几种用法简明教程 (需要初始化要排序的对象)对 一个数组的所有元素
    Java中Array.sort()的几种用法简明教程(需要初始化要排序的对象)对一个数组的所有元素进行排序,并且是按从小到大的顺序Java中Array.sort()的几种用法简明教程(需要初始化要排序的对象)======================================================1、Arrays.sort(int[]a)......
  • 超详细!详解一道高频算法题:数组中的第 K 个最大元素
    超详细!详解一道高频算法题:数组中的第K个最大元素今天分享的题目来源于LeetCode第215号问题,是面试中的高频考题。题目描述在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。......
  • leedcode-两个数组的交集
    自己写的:fromtypingimportList#导入List类型,用于函数参数和返回类型的注解classSolution:defintersection(self,nums1:List[int],nums2:List[int])->List[int]:#初始化一个空列表,用于存储两个列表的交集mylist=[]#遍历num......
  • LeetCode 2439. 最小化数组中的最大值
    给你一个下标从 0 开始的数组 nums ,它含有 n 个非负整数。每一步操作中,你需要:选择一个满足 1<=i<n 的整数 i ,且 nums[i]>0 。将 nums[i] 减1。将 nums[i-1] 加1。你可以对数组执行 任意 次上述操作,请你返回可以得到的 nums 数组中 最大值......
  • 利用数组储存表格数据
    原理以及普通数组储存表格信息        在介绍数组的时候说过,数组能够用来储存任何同类型的数据,这里的意思就表明只要是同一个类型的数组据就可以储存到一个数组中。那么在表格中同一行的数据是否可以储存到同一个数组中呢?答案自然是可以,但是与之对应的疑惑便也产生了,......
  • 嵌入式之指针、数组、函数篇(三)
    三、指针、数组、函数1.什么是指针?指针其实也是个变量,只不过这个变量里面存储的是内存地址。2.什么是指针的类型?举个例子:int*a;指针类型为int*char*c;指针类型为char*3.什么是指针所指向类型举个例子:int*a;指针指向类型为intchar*c;指针指向类型为char注......
  • 数组
    数组数组的定义数组声明创建packagecom.xqstudy.array;publicclassArrayDemo01{//变量的类型变了的名字=变量的值;//数组的类型publicstaticvoidmain(String[]args){int[]nums;//1.声明一个数组nums=newint[10];//2.......
  • 最优算法100例之38-构建乘积数组
    专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用......
  • 最大连续子数组和(最大子段和)
    1.题目要求:最大连续子数组和(最大子段和)问题背景:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为:Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n例如,当(a[1],a[2]......