【iOS开发基础】【C语言】02 - 函数、运算

一、函数

  (一)什么是函数

    任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。

  (二)函数的定义

    目的:将一个常用的功能封装起来,方便以后调用

    步骤:确定函数名,确定函数体,调用

    格式:返回值类型 函数名(形式参数列表)

       {函数体}

  (三)函数的调用 

    

 1 int average(int num1,int num2)
 2
 3 {
 4
 5     return  (num1 + num2)/2;
 6
 7 }
 8
 9 int main()
10
11 {
12
13     int a = 1;
14
15     int b = 3;
16
17     int c = average(a,b); //调用函数
18
19     return 0;
20
21 }

示例:  

  (四)函数的参数   

    ①. 形参:定义函数时,函数名后面的参数 如num1和num2

    ②. 实参:调用函数时,传人的具体数据   如a和b

    ③. 形参和实参的个数必须相等

    ④. 函数体内部不能定义和形参同名的变量

    ⑤. 如果是基本的数据类型作为形参,则是纯粹的值传递,修改函数内部形参的值并不会影响到实参的值

    ⑥. 一个函数可以没有形参,也可以有无限个形参

  (五)函数的返回值

    1.return 的作用:

      ①. 退出函数

      ②. 返回一个具体的值给函数的调用者

    2.返回值使用注意:

      ①. C语言是弱语法弱类型的语言,非常不严格

      ②. 如果没有写清楚返回值的类型,则默认为int型的

      ③. void代表没有返回值

      ④. 就算明确声明了返回值类型,也可以不返回任何的值

      ⑤. C语言默认情况下,不允许有两个同名的函数

  (六)函数使用注意

    ①. 默认不允许函数重名

    ②. 函数之间是平等的,不能够嵌套定义

    ③. 函数不可以重复定义,但是可以重复声明,只要是在调用前声明就可以,地方随便

    ④. 函数如果是只要声明没有定义,那么编译可以成功,但链接时会失效

  (七)多人协作开发   

    #include<stdio.h>是一个系统头文件。

    #include<abc.txt>相当于把abc.txt文件中的所有内容以纯文本的方式拷贝到当前位置。

    ""表示文件与.c文件处于同一路径,可以使用相对路径也可以使用绝对路径。左边有/的是绝对路径,没有/则为相对路径。

    注意:自定义的文件使用"",系统文件使用<>。

    函数如果在调用时,函数定义在调用之后,且前面没有进行相应的声明,则编译器报错;

    调用函数,没有函数声明,编译器不会报错,链接时报错,不定义函数反而不报错。

    链接:把项目中所以相关的.o目标文件和c语言的函数库合并在一起,生成可执行文件。

    通常:

      ①. 函数的定义放在.c文件中,函数的声明放在.h文件中

      ②. 如果要是有某个.c文件中定义的函数,只需要包含.c文件对应的.h文件即可

      ③. .h文件生下来就是打酱油被别人拿来拷贝包含的,编译链接时不用写出

  (八)函数的补充   

    (1)main函数

      返回值是返回给操作系统的,0为正常退出,其他值为非正常退出。

    (2)printf函数

      返回值为字符数。如printf("abc");则返回值为3,若printf("abc男\n");的返回值为7,因为一个中文在 Mac OS X 系统中占3个字符。

    (3)scanf函数

      ①.使用前必须加入#include <stdio.h>。

      ②.调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待输入数据,并且将输入的数据赋值给地址对应的变量。

      ③.用scanf函数接收多个数值时,数值之间的分隔符是任意的。

      ④.scanf的第一个参数中不要包含\n,比如scanf("%d\n", &a); 这将导致scanf函数无法结束。

二、运算

  (一)算术运算

    C语言一共有34种运算符,包括常见的加减乘除运算  

      ①. 加法:+ 还可以表示正号

      ②. 减法:- 还可以表示负号

      ③. 乘法:* 非数学意义上的X

      ④. 除法:/  注意1/2的值为0,并不是二分之一

      ⑤. 取余(模运算):两个整数相除之后的余数(注意两边都必须是整数,正负性取决于%左侧的数值)

    注意:     

      ①. int a = 10.8;//丢失精度。结果为10——自动类型转换

      ②. int a = (int)10.8;//把10.8强制转换为整型——强制类型转换

      ③. Double c = 10.6 + 6//结果为16.600000。在计算机中,拿两个数值进行运算,如果类型不同则进行自动类型提升。即把6转为6.000000后再参与运算——自动类型提升

  (二)赋值运算

    ①.简单赋值

      int a = 10 + 5;a = b = 10;//从右向左,左边不能为常量

    ②.复合赋值

      a = a + 5; => a += 5;

      a = a * 5; => a *= 5;

      a += 5 * 6 + 4; => a = a +(5 * 6 + 4)

    提示:运算顺序取决于运算符的优先级和结合的顺序。

  (三)自增自减  

    int a = 10;

    把a的值加1有四种方法:

      ①. a = a + 1;

      ②. a += 1;

      ③. a++;

      ④. ++a;

    简单区分a++和++a。

      int b;

      int a = 10;

      b = ++a; //a == 11,b == 11;a先把值加1为11,再赋值给b

      b = a++; //a == 11,b == 10;a先把值10复制给b,a自己再加1为11

      b = (a++) + (++a);  //a1 == 10,a2 == 12,b == 22

      b = (++a) + (a++);  //a1 == 11,a2 == 11,b == 22

    注意:int d = 10++;//这种写法是错误的,因为对常量进行自加和自减没有任何意义。

  (四)sizeof

    作用:用来计算变量,常量或者是一种数据类型所占的内存字节数。

    基本形式:sizeof(变量名|常量|数据类型),完成之后返回一个值。

      ①. Sizeof 变量|常量

      ②. Sizeof (变量|常量)

      ③. Sizeof (数据类型)

    注意:数据类型一定要用括号括起来,不能写成sizeof 数据类型这样的形式。

  (五)关系运算

    (1)条件判断

      默认情况下。在程序中写出的每一句正确的代码都会被执行,但很多时候我们需要在某个条件成立的情形下才执行某一段代码,如登录操作,这种情况可以使用条件语句来完成。

    (2)真假

      在C语言中,条件成立称为“真”,条件不成立称为“假”。

      C语言规定,任何数值都有真假性,任何非0值都为真,只有0才为假,无布尔类型。

    (3)关系比较

      关系运算的结果只有两种情况,如果条件成立就为真,值为1,如果条件不成立就为假,值为0。有6种运算符,分别是:(1) <  (2) <=  (3) >  (4) >=  (5) ==  (6) !=

    (4)使用注意

      ①. == 和 != 优先级相等,其他四个关系运算符的优先级相等,且前者的优先级低于后者。如2 == 3 > 1 应该先计算3 > 1

      ②. 关系运算符中,若优先级相同,则“从左往右”结合。如4 > 3 < 2,先计算4 > 3

      ③. 关系运算符的优先级低于算术运算符。如3 + 4 > 8 - 2 相当于(3 + 4) > (8 - 2)

      ④. 练习5 != 4 + 2 * 7 > 3 == 10 先计算5 != 18 > 3 == 10,5 != 1 == 10,1 == 10,假

  (六)逻辑运算 

    逻辑运算的结果只有两个:真(0)和假(1)

      ①. 逻辑与   &&   条件1 && 条件2 只有的那个条件1和条件2都成立时,才为真否则为假。

      ②. 逻辑或   ||   条件1 || 条件2  当条件1或条件2中有一个成立时就为真,都不成立时为假。

      ③. 逻辑非   !    !条件   取反

    注意:逻辑运算符在进行运算时,只要能够确定整体的真假性,后面的条件就不再进行而是直接忽略。

    int a = b = 10;

    int c = (a > 5) && (++b >= 11);//此时a == 10,b == 11,c == 1

    int c = (a < 5) && (++b >= 11);//此时a == 10,b == 10,c == 0

    提示:在进行逻辑运算时,如果搞不清楚各个符号的优先级,可以使用()。

  (七)三目运算    

    双目:需要两个值参与运算

    单目:1个数值参与运算  如!5

    三目:需要3个数值参与

    格式:条件?数值1:数值2

    先判断?前的条件,若条件成立则返回数值1,若条件不成立则返回条件2。

    要求比较a和b的值,把数值大的存入到c中  c = a > b ? a : b

    比较a,b,c三个数的值,把最大的值存入到d中

    int  abmax = (a > b) ? a : b;

    d = abmax > c : abmax : c;

时间: 2024-08-01 22:51:16

【iOS开发基础】【C语言】02 - 函数、运算的相关文章

iOS开发系列--C语言之基础知识

概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift 这么看下去还有大量的内容需要持续补充,但是今天我们从最基础的C语言开始,C语言部分我将分成几个章节去说,今天我们简单看一下C的一些基础知识,更高级的内容我将放到后面的文章中. 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): Hello World 运行过程 数据类型 运算符 常用

iOS开发-基础面试题(一) 分类: 面试题

iOS开发-基础面试题(一) 1.Difference between shallow copy and deep copy??浅复制和深复制的区别?? 答:浅层复制:只复制指向对象的指针,而不复制引用对象本身.?深层复制:复制引用对象本身.?意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源?还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们

iOS开发基础知识--碎片32

 iOS开发基础知识--碎片32 1:动画属性UIViewAnimationOptions说明 a:常规动画属性设置(可以同时选择多个进行设置) UIViewAnimationOptionLayoutSubviews:动画过程中保证子视图跟随运动. UIViewAnimationOptionAllowUserInteraction:动画过程中允许用户交互. UIViewAnimationOptionBeginFromCurrentState:所有视图从当前状态开始运行. UIViewAnimat

iOS开发基础知识--碎片3

iOS开发基础知识--碎片3  iOS开发基础知识--碎片3 十二:判断设备 //设备名称 return [UIDevice currentDevice].name; //设备型号,只可得到是何设备,无法得到是第几代设备 return [UIDevice currentDevice].model; //系统版本型号,如iPhone OS return [UIDevice currentDevice].systemVersion; //系统版本名称,如6.1.3 return [UIDevice

iOS开发中常用的数学函数

/*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(@"结果 %.f", pow(3,2)); //result 9 NSLog(@"结果 %.f", pow(3,3)); //result 27 //开平方运算 NSLog(@"结果 %.f", sqrt(16)); //result 4 NSLog(@"结果 %.f", sqrt(81)); //result 9 //进一 NSLog(@&q

IOS开发基础环境搭建

一.目的 本文的目的是windows下IOS开发基础环境搭建做了对应的介绍,大家可根据文档步骤进行mac环境部署: 二.安装虚拟机 下载虚拟机安装文件绿色版,点击如下文件安装 获取安装包:          百度网盘:链接:http://pan.baidu.com/s/1c28EkpE 密码:93tl 解压后如下,点击如下脚本进行安装:按提示进行: 服务配置(按需配置): 这里仅限配置网络功能即可:选择1 回车-选择桥接模式 选择2启用桥接服务 三.安装macos虚拟机 注意:查看本机cup类型

IOS开发系列--C语言之指针

概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 什么是指针 数组和指针 函数指针 什么是指针 存放变量地址的变量我们称之为"指针变量",简单的说变量p中存储的是变量a的地址,那么p就可以称为是指针变量,或者说p指向a.当我们访问a变量的时候其实是程序先根据a取得a对应的地址,再到这个地址对应的存储空间中拿到a的值,这种方式我们称之为"直接

iOS开发基础知识--碎片21

iOS开发基础知识--碎片21  1:[UIScreen mainScreen].scale知识点 当屏幕分别为640x940时[[UIScreen mainScreen] scale]=2.0 当屏幕分别为320x480时[[UIScreen mainScreen] scale]=1.0 2:如何正确的绘制1像素的线 #define SINGLE_LINE_WIDTH (1 / [UIScreen mainScreen].scale) #define SINGLE_LINE_ADJUST_OF

iOS开发基础知识--碎片5

iOS开发基础知识--碎片5  二十三:addSubview和insertSubview 区别 addSubview 是将view加到所有层的最顶层 相当于将insertSubview的atIndex参数设置成view.subviews count 即 [view addSubview:oneview] == [view insertSubview:oneview atIndex:view.subviews count] addSubview是加到最后 insertSubview是加到指定的位置

iOS开发基础知识--碎片12

iOS开发基础知识--碎片12 1:Delegate运用 .h #import <UIKit/UIKit.h> @protocol FilterHeaderViewDelegate <NSObject> @required -(void)filterHeaderViewMoreBtnClicked:(id)sender; @end extern float CYLFilterHeaderViewHeigt; @interface FilterHeaderView : UIColle