ios学习路线—C语言(函数,数组,字符串,指针)

函数
1.一个源程序文件由一个或多个函数组成,但必须有且仅有一个main函数。
2.C程序的执行从main函数开始,调用其他函数后,流程回到main函数,main函数结束整个函数的运行。
3.由主函数调用其他函数,其他函数也可以相互调用,但不能调用main函数。同一个函数可以被一个或多个函数调用任意多次。
4.从用户角度看,函数分为两种:
(1).标准函数:即库函数,由系统提供。
(2).用户自定义函数:用户自己定义的。
5.从函数形式看,函数分为两种:
(1).无参函数
(2).有参函数

函数定义的一般形式
类型标识符 函数名(类型1 形参1,类型2 形参2,…)
{
声明部分
语句
}
说明:
(1).所有函数在定义时都是相互独立的,即不能嵌套定义。
(2).类型标识符:说明了函数返回值的类型,当返回值为int时,可省略不写。
(3).函数名:遵循标识符的命名规则;同一个函数中函数名必须唯一。
(4).只能是变量,每个形参要有类型,当定义的函数没有参数时叫作”无参函数”。
(5)函数体:当声明部分和语句都没有时,称为”空函数”,空函数没有任何实际作用。

函数参数和函数的值
实际参数:调用函数时,函数名后面括弧中的参数称为”实际参数”。
形式参数:定义函数时,函数名后面括弧中的参数称为”形式参数”。

关于形参和实参的说明
(1).未出现函数调用时,形参变量不占内存中的存储单元。在发生函数调用时,形参才被分配内存单元。调用结束后,形参所占的内存单元被释放。
(2).实参可以是常量,变量或表达式,必须有确定的值,在调用时,将实参的值赋给形参变量。
(3).实参与形参的类型应相同或兼容。如果类型不一致,则将实参转换为和形参一致时再赋值。
(4).实参变量对形参变量是单向的”值传递”。即只能实参传给形参,不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。

函数的返回值
(1).函数通过return语句返回函数的值,若不需要返回函数值,可以不要return语句。
(2).定义函数时,函数的返回值类型应与return语句中的表达时类型一致。如果不一致,则以函数类型为准。
(3).若函数中没有return语句,函数也会带回一个不确定的值,为了明确表示”不带回值”,用关键字”void”定义”无类型”(或称”空类型”)。

函数的调用
函数调用的一般形式
函数名(实参列表)或函数名();

对被调用函数的声明
函数类型 函数名(参数类型1,参数类型2,…)
若被调用函数定义出现在主调函数之前,可以不必声明。
若在函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必对所调用的函数再作声明。

函数的嵌套调用
C语言不能嵌套定义函数,但可以嵌套调用函数,即允许在调用一个函数的过程中,又调用另外一个函数。

数组作为函数参数
数组元素作函数实参与变量作为实参一样,是单向值传递。
数组名作函数实参传递的是数组的首地址(此时行参和实参指的是同一内存单元)

局部变量和全局变量
变量按其作用域分类可分为局部变量和全局变量。
局部变量:在一个函数内部定义的变量。
有效范围:只在本函数范围内有效。

全局变量:在函数外部定义的变量(又叫外部变量)。
有效范围:从定义变量的位置开始到本资源文件结束,可以为本文件其他函数所共用。
注意:当局部变量和全局变量重名时,则在局部变量的作用范围内,全局变量不起作用。

用static声明局部变量
有时希望函数中的局部变量的值,在调用结束时不消失,而保留原值。即其占用的存储单元不释放,下次调用该函数时,该变量已有值(上一次调用结束时的值)。这时应定义该局部变量为”局部静态变量”,用static加以声明。

对局部静态变量的4点说明:
(1).局部静态变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。
而自动变量(局部动态变量)属于动态存储类别,占动态存储区空间,函数调用结束就释放。
(2).对局部静态变量,只在编译时赋初值一次,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值。
而对自动变量赋初值,不是在编译时进行的,而是在函数调用时进行。每次调用一次函数,重新给自动变量赋一次初值。
(3).若定义局部变量不赋初值的话,对静态变量来说,编译时自动赋初值0(数值型)或空字符(字符型)。
而对自动变量来说,它的值是一个不确定的值。因为每次函数调用结束后存储单元已释放,下次调用又重新分配单元,而所分配的单元中的值是不确定的。
(4).虽然局部静态变量在函数调用结束后仍然存在,但其它函数不能引用它。

数组
一维数组定义方式:数据类型 数组名[常量表达式]。
数组名表示内存首地址是抵制常量。
编译时分配连续内存,内存字节数=元素个数*sizeof(元素数据类型)
数组必须先定义,后使用。
数组元素表示形式:数组名[下标],其中:下标可以是常量或整数表达式
只能逐个引用数组元素,不能一次引用整个数组。
例如:

int a[10];
printf("%d",a);错误
for(int j=0;j<10;j++){
    printf("%d",a[j])正确
}

C语言对数组不作越界检查,使用时要注意

int data[5];
data[5] = 10;错误

一维数组的初始化
数组不初始化,其元素值为随机数。
对static数组元素不赋初值,系统会自动赋以0值。
只给部分数组元素赋初值。
当全部数组元素赋初值时,可不指定数组长度。

变量与数组的实质
变量的实质是,就指的是存储单元,变量的类型就是该存储单元的类型它指明了该存储单元占用几个字节,如果存入数据及存入数据的类型。变量名是为了引用变量而设置的,它的实质是该存储单元地址的别称。
数组定义为:同一类型数据的有序集合。其实质是同一类型存储单元的有序集合,所谓有序指的是元素1到N按地址增加的方式联系存放,每一个元素如何存入数据并指明了存入数据的类型。数组名的实质是数组所在内存中第一个元素地址的别称。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值