首页 > 其他分享 >从零开始学习嵌入式----C语言指针函数

从零开始学习嵌入式----C语言指针函数

时间:2024-07-12 13:28:43浏览次数:12  
标签:函数 指向 int 嵌入式 ---- 参数 C语言 指针

目录

拨开迷雾:深入浅出C语言指针函数

一、 指针?函数?傻傻分不清楚

二、指针函数闪亮登场

三、 抽丝剥茧:解析指针函数

四、实例讲解:指针函数的应用

五、总结


拨开迷雾:深入浅出C语言指针函数

       指针,一直是C语言学习路上的「拦路虎」,而指针函数更是让许多初学者望而却步。今天,我们就来揭开指针函数的神秘面纱,深入浅出地理解它。

一、 指针?函数?傻傻分不清楚

在探究指针函数之前,我们先来回顾一下指针和函数的概念:

  • **指针:**本质上是一个变量,但它存储的不是普通数据,而是一个内存地址。通过这个地址,指针可以间接地访问和修改其所指向的内存单元。

  • **函数:**是一段完成特定任务的独立代码块。它可以接收参数,进行计算,并返回结果,提高了代码的复用性和模块化程度。

二、指针函数闪亮登场

       了解了指针和函数,现在让我们来揭晓指针函数的真面目:指针函数是一个返回值类型是指针的函数

       简单来说,它就像一个普通的函数,只是它返回的不是一个普通的值,而是一个指向某个内存地址的指针。


三、 抽丝剥茧:解析指针函数

为了更清晰地理解指针函数,让我们来剖析一下它的定义形式:

数据类型 * 函数名(参数列表);

  • 数据类型: 指针函数返回值所指向的数据类型,例如 int、char、结构体等。

  • *: 表明这是一个指针函数,星号和函数名之间没有空格。

  • 函数名: 函数的名称,遵循标识符命名规则。

  • 参数列表: 函数接收的参数列表,可以为空或包含多个参数。

四、实例讲解:指针函数的应用

       光说不练假把式,让我们来看一个实际的例子,假设我们需要编写一个函数,它接收两个整数作为参数,并返回这两个整数中较大的那个数的地址:

#include <stdio.h>

#  #
int *findMax(int *a, int *b) {
  if (*a > *b) {
    return a;
  } else {
    return b;
  }
}

#  #
int main() {
  int num1 = 10;
  int num2 = 20;

#  #
  int *maxPtr = findMax(&num1, &num2);

#  #
  printf(「较大的数是:%d
」, *maxPtr);

#  #
  return 0;
}

在这个例子中:

  • findMax 函数就是一个指针函数,它接收两个指向整数的指针 ab 作为参数。

  • 函数内部比较 ab 所指向的值的大小,并将较大值的地址返回。

  • main 函数中,我们调用 findMax 函数并将两个整数的地址作为参数传递。

  • 函数返回指向较大值的指针,并将其存储在 maxPtr 中。

  • 最后,我们通过 *maxPtr 解引用指针,获取到较大值的实际值并打印输出。

五、总结

       指针函数是C语言中一个重要的概念,它为我们提供了一种灵活的操作内存地址的方式。通过理解指针函数的定义、语法和应用场景,我们可以更好地掌握C语言,编写出更加高效、简洁的代码。

希望这篇文章能帮助你拨开指针函数的迷雾,让你在C语言的学习之路上更加得心应手!

标签:函数,指向,int,嵌入式,----,参数,C语言,指针
From: https://blog.csdn.net/D1557329860/article/details/140376388

相关文章

  • 从零开始学习嵌入式----C语言函数指针
    C语言的函数指针:从入门到深入理解    函数指针是C语言中一个强大且灵活的特性,它允许我们将函数作为参数传递给其他函数,或者将函数存储在数据结构中。正确理解和使用函数指针可以帮助我们编写更加模块化、高效和可扩展的代码。一、什么是函数指针?    在C......
  • Ubuntu系统下相关问题解决方案(亲测)
    系统:ubuntu20.04记录使用ubuntu系统过程中遇到的一些问题以及亲测有效的解决方案后续遇到其他问题,会将相关内容持续更新对应原文:Ubuntu系统下相关问题解决方案(亲测)-知乎(zhihu.com)目录一、速度问题1.1gitcloneGithub上的项目时速度慢1.2ubuntu下设置pip加速1.......
  • java实现浅拷贝与深拷贝
    目录浅拷贝 深拷贝实现cloneable接口序列化浅拷贝浅拷贝是指创建一个新的对象,该对象的内容是原始对象中各项的引用。换句话说,浅拷贝仅复制了原始对象中元素的引用,而不是元素本身的拷贝classPeopleimplementsCloneable{privateStringname;privateint......
  • 腾讯特别调薪8%,年底十三薪分摊到月薪:福利升级还是另有深意?
    近日,一则关于腾讯公司薪酬政策调整的消息在业内外引起了不小的震动。据悉,腾讯宣布把校招生的房补从4000元每月调整为按15个月发放,并加在月薪base中。调整后,员工每月base工资增加3200元,多出来的三个月同年终奖一起发放。腾讯对校招生的房补标准每月4000元(北上广深,成都标......
  • 米哈游平均月薪44.2K,高出同行2倍,揭秘游戏行业薪资神话!
    如果说数字世界里的金币能让人心动,在现实中有一个公司直接给员工发放硬通货(工资),那无疑就是传说中的赢家——比如这位名叫米哈游的大玩家。近期,米哈游(miHoYo)公司凭借其平均月薪高达44.2K的薪资水平,再次将游戏行业的薪资话题推向了风口浪尖。游戏行业的平均薪资就已经高......
  • 关于cartographer在github中的文件分配
    Cartographer是一个开源的库,用于2D和3D的SLAM。在Cartographer项目中,地图构建的数据传入和处理通常分布在几个不同的组件和文件夹中。以下是一些可能包含相关代码的文件夹和组件:1.**传感器驱动**(`cartographer/sensor`):这个目录包含用于处理不同类型传感器输入的代码,例如......
  • uniapp 使用uview 组件 DatetimePicker 默认值无效问题
    1.DatetimePicker默认值无效问题 -- 解决办法:使用$refs解决<u-datetime-pickerref="defaultPicker":show="openDatePicker":value="dateValue"mode="date" minDate="-2209017943"closeOnClickOverl......
  • js 数组方法 - 查找 - indexOf()、includes()、find()、findIndex()、filter()、lastI
    indexOf()该方法可以返回数组中指定元素的索引,如果不存在,则返回-1。constarr=["apple","banana","orange"];constindex=arr.indexOf("banana");console.log(index);//输出:1constarr2=["aaa","bbb","ccc",9......
  • 动态规划的一种常见技巧
    动态规划是运筹学的一个分支,是求解决策过程最优化的过程。动态规划并不是一种算法,而是一种思想,或者说策略动态规划的思想就是将大问题分解成一个一个的小问题,聚焦到每个小问题并逐个击破,小问题解决了就没有大问题了我们以一个关于最长递增子序列问题为例,设想你有一个包含......
  • Arpa’s overnight party and Mehrdad’s silent entering
    Arpa’sovernightpartyandMehrdad’ssilententering题目大意给\(n\)对情侣染色,要求情侣不能然相同颜色而且相邻\(3\)人的颜色不同,求合法方案。数据范围满足\(1\len\le10^5\)。思路钦定\(2i-1\)与\(2i\)的人吃的食物不一样,那么这样建图跑出来的一定是二分图......