黑马程序员技术交流社区
标题: 北京0419期5.2上课笔记 [打印本页]
作者: 赵安庆 时间: 2016-5-3 21:51
标题: 北京0419期5.2上课笔记
#pragma mark 00 知识回顾
1.什么是函数?
大家学习编程的目的是什么?
是不是为了从事iOS开发对不对,做iOS开发的同时。
从事iOS开发就是做app。
有的是想成为高富帅,有的是想成为白富美
函数就是为了满足某一个功能,封装的一段代码!可以解决代码重用的问题,也可以解决分工的问题
#pragma - 01 局部变量和全局变的异同点 [掌握]
变量:内存中若干个字节,用来存储数据
1>局部变量:定义在函数内部的变量
2>全局变量:定义在所有函数外部的变量变量叫做全局变量
3>局部变量属于距离最近的{}
void test(){
//局部变量
int age = 0;
age++;
{
int tepm = 10;
}
printf("age= %d\n",age);
}
4)初始值
局部变量:初始是垃圾值
全局变量:0
5>创建和回收的时间不同
局部变量:程序运行到局部变量那一行代码的时候才会创建,在作用域结束回收
全局变量:程序一启动就会创建,在程序运行结束回收
#pragma - 02 什么时候需要使用全局变量 [掌握]
void testing()
{
int age = 33;
printf("%d\n",age);
}
int main()
{
for (int i = 0; i<3; i++) {
testing();
}
return 0;
}
1.什么时候需要使用全局变量?
如果一个变量需要在整个程序范围内访问
会在多个函数或者同一个函数多次使用,同一个变量的时候!!!
#pragma - 03 函数的参数的介绍
什么情况下需要使用函数的参数
班长有一个买冰棍的功能,但是买冰棍需要钱?我们不能让班长去买冰棍还自掏腰包吧!
所以我们是不是应该给班长钱,班长才能去买冰棍!
这个时候就需要给班长钱!!
1.为什么视频中说scanf函数在ios开发中用不了?
iPhone 运行 OS X
iOS应用如何获取用户输入信息,UITextfield这个控件来获取.
scanf是从控制台用键盘输入,iOS操作系统不支持这个功能.没有控制台
如果iPhone弹出一个控制台,宝宝表示看不懂!!
2.函数的调用者是谁?
1>main函数
main函数的调用者是操作系统.
2>其他函数
1)main函数中调用其他函数,那么main函数是调用者
2)main函数中调用函数A,函数A又调用函数B,函数B的调用者是A
#pragma - 04 参数可以实现的效果
传入的参数的方法既可以是常量也可以是变量
void test(int num){
int num;
printf("%d\n",num);
}
int main(){
int num = 10;
test(10);
return 0;
}
#pragma - 05 练习水仙花的数量
判断一个数是不是水仙花数?
三位数,并且各位数的立方相加等于其本身
void isShuiXianHuaShu(int num){
//1.判断是不是三位数
if (num >= 100 && num <= 999) {
int bai = num /100;
int shi = num %100 / 10;
int ge = num %10;
if (bai*bai*bai + shi*shi*shi + ge*ge*ge == num) {
printf("这是一个水仙花数");
}else{
printf("不是水仙花数");
}
}else{
printf("不是水仙花数");
}
}
延伸:找出所有的水仙花的数量
void getAllShuixianhua(){
int temp = 0;
for (int i = 100; i <= 999; i ++) {
int bai = i /100;
int shi = i %100 / 10;
int ge = i %10;
int num = bai*bai*bai + shi*shi*shi + ge*ge*ge;
if ( num == i) {
temp++;
printf("这是一个水仙花数!%d\n",i);
}
}
printf("所有的水仙花数量是--%d\n",temp);
}
#pragma mark - 06 什么时候函数需要带参数 [掌握]
"小结
如果你写一个函数的时候,不知道有没有参数,就暂时不要写
先写函数的主体功能部分,在写函数的实现部分的时候,发现需要数据,数据的来源是
不定的,但是数据的类型是确定的,这个时候我们就将这个数定义为函数的参数
#pragma mark - 07 课堂练习讲解 [掌握] --自己讲解
作者: 赵安庆 时间: 2016-5-3 21:52
我们来看一下一个小练习 -- 判断一个年份是不是闰年? '函数取名的时候最好是首字母小写,其余单词的字母大写 闰年的规则是 年份能被 400整除,或者 年份能被4整除,同时被100整除不为0 void isRunNian(){ if (年份 %400 || (年份%4 ==0 && 年份 %100 != 0)) { printf("这是一个闰年"); }else{ printf("这不是一个闰年"); } } #pragma mark - 08 带多个参数的函数 [掌握] 功能: 计算小明的期中考试成绩 void getXiaomingScore(int yuwen,int shuxue,int yingyu,int art){ int score = yuwen + shuxue + yingyu + art; printf("小明的考试成绩是--%d",score); } #pragma mark - 09 什么时候需要带多个参数 [掌握] 多个参数的函数的声明方式: 在小括弧中声明多个变量就可以了,每个声明用逗号分开。 然后我们在调用的函数代理多个参数,必须要为这个函数的每一个参数赋值! #pragma mark - 10 练习讲解 求输入的三个数中的最大值 求三个数中最大值的其他实现 方法一: void getMax(int num1,int num2,int num3){ if (num1 >= num2 && num1 >= num3) { printf("最大数是--%d",num1); }else if(num2 >= num1 && num2 >= num3){ printf("最大数是--%d",num2); }else{ printf("最大数是--%d",num3); } } 求三个数中最大值的其他实现 //思路 //1.找到第一个数和第二个数中的比较大的 //2.拿1中结果和第三个数进行比较谁最大谁就是最大值. 方法二: void maxNum(int num1,int num2,int num3) { int max = num1; //找到num1和num2之间的最大数 if(num2 > max) { max = num2; } //拿num1和num2之间的最大数和num3比较谁大谁就是三个数中最大的 if(num3 > max) { max = num3; } } #pragma mark - 11 return关键字 将函数结束 讲解一个return后面的警告,代码永远执行不到 void test(){ printf("啦啦啦啦啦了"); printf("啦啦啦啦啦了"); return; printf("啦啦啦啦啦了"); } void test(){ for (int i = 0; i < 10; i++) { if (i == 5) { return; // break; } printf("现在循环到的数字是---%d\n",i); } printf("我的代码终于敲完了---\n"); } #pragma mark - 12 带返回值的函数 下面两个函数有什么区别 void test(){ printf("----"); } int test1(){ return 0; } printf 仅仅是c语言中的输出方法 oc中的输出方法不是这个!!! NSLog(@""); "强调 1>为什么函数一些函数要有返回值? 函数是为了实现一个功能,最终功能完毕之后,调用者非常期待功能执行完毕之后的结果! 写代码需要烟。 我给你钱去买烟,你是不是得把烟买回来给我,我还等着烟去写代码!! 2>如何将数据返回给调用者? 3>调用者如何拿到函数的返回的数据? 函数: 函数是一段能实现特殊功能的代码块 比如: 一个函数实现判断一个数是不是偶数 ---> 功能是就判断,只要做到能判断就行了,不需要去打印 int isOuShu(int num) { if(num%2==0) { return 1; } else { return 0; } } int main() { int result = isOuShu(20); if(result == 1) { printf("是偶数,应该....\n"); } else{ printf("是奇数,应该....\n"); } return 0; } #pragma mark - 13 函数什么时候需要返回数据[掌握] 1>什么时候定义函数的时候需要返回值,看函数的调用者需不需要一个结果,如果需要一个结果,那么就需要函数有一个返回值。 int panDuanOuShu(int num){ // 0 是假 非0 为真 if (num % 2 != 0) { printf("不是一个偶数"); return 1; } printf("是一个偶数"); return 0; // return !(num %2); } #pragma mark - 14 使用带返回值的函数注意细节[掌握] "函数在定义好返回值之后,必须会有返回值。否则报错 但是函数有返回值,可以不接收 "例子 定义一个函数计算两个double数据的和,并且返回,调用这个函数 double addNum1andNum2(double num1,double num2) { return num1+num2; } int main() { double result = addNum1andNum2(1.1,2.2); printf("%lf\n",result); } 报错的信息:定义了函数的返回值类型,但是却没有返回 control reaches end of non-void function 函数在定义好返回值之后,必须会有返回值。否则报错 下面的代码就会报错!!! int test(int num){ if (num % 2 == 0) { printf("是一个偶数"); }else if(num % 2 == 1){ printf("是一个奇数"); } } #pragma mark - 15 函数的声明和定义 [掌握] 我们来想一想为什么? 因为编译器在编译代码的时候,是从上到下从左到右编译的,如果函数的定义放在调用的下面,编译时候遇到 调用的语句,就不知道有这个函数存在 main函数最好都写在第一位 声明和实现应该分开 声明和实现需要分开
作者: 赵安庆 时间: 2016-5-3 21:53
我们来看一下一个小练习 --
判断一个年份是不是闰年?
'函数取名的时候最好是首字母小写,其余单词的字母大写
闰年的规则是
年份能被 400整除,或者
年份能被4整除,同时被100整除不为0
void isRunNian(){
if (年份 %400 || (年份%4 ==0 && 年份 %100 != 0)) {
printf("这是一个闰年");
}else{
printf("这不是一个闰年");
}
}
#pragma mark - 08 带多个参数的函数 [掌握]
功能:
计算小明的期中考试成绩
void getXiaomingScore(int yuwen,int shuxue,int yingyu,int art){
int score = yuwen + shuxue + yingyu + art;
printf("小明的考试成绩是--%d",score);
}
#pragma mark - 09 什么时候需要带多个参数 [掌握]
多个参数的函数的声明方式:
在小括弧中声明多个变量就可以了,每个声明用逗号分开。
然后我们在调用的函数代理多个参数,必须要为这个函数的每一个参数赋值!
#pragma mark - 10 练习讲解
求输入的三个数中的最大值
求三个数中最大值的其他实现
方法一:
void getMax(int num1,int num2,int num3){
if (num1 >= num2 && num1 >= num3) {
printf("最大数是--%d",num1);
}else if(num2 >= num1 && num2 >= num3){
printf("最大数是--%d",num2);
}else{
printf("最大数是--%d",num3);
}
}
求三个数中最大值的其他实现
//思路
//1.找到第一个数和第二个数中的比较大的
//2.拿1中结果和第三个数进行比较谁最大谁就是最大值.
方法二:
void maxNum(int num1,int num2,int num3)
{
int max = num1;
//找到num1和num2之间的最大数
if(num2 > max)
{
max = num2;
}
//拿num1和num2之间的最大数和num3比较谁大谁就是三个数中最大的
if(num3 > max)
{
max = num3;
}
}
#pragma mark - 11 return关键字
将函数结束
讲解一个return后面的警告,代码永远执行不到
void test(){
printf("啦啦啦啦啦了");
printf("啦啦啦啦啦了");
return;
printf("啦啦啦啦啦了");
}
void test(){
for (int i = 0; i < 10; i++) {
if (i == 5) {
return;
// break;
}
printf("现在循环到的数字是---%d\n",i);
}
printf("我的代码终于敲完了---\n");
}
#pragma mark - 12 带返回值的函数
下面两个函数有什么区别
void test(){
printf("----");
}
int test1(){
return 0;
}
printf 仅仅是c语言中的输出方法
oc中的输出方法不是这个!!!
NSLog(@"");
"强调
1>为什么函数一些函数要有返回值?
函数是为了实现一个功能,最终功能完毕之后,调用者非常期待功能执行完毕之后的结果!
写代码需要烟。
我给你钱去买烟,你是不是得把烟买回来给我,我还等着烟去写代码!!
2>如何将数据返回给调用者?
3>调用者如何拿到函数的返回的数据?
函数: 函数是一段能实现特殊功能的代码块
比如: 一个函数实现判断一个数是不是偶数 ---> 功能是就判断,只要做到能判断就行了,不需要去打印
int isOuShu(int num)
{
if(num%2==0)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int result = isOuShu(20);
if(result == 1)
{
printf("是偶数,应该....\n");
}
else{
printf("是奇数,应该....\n");
}
return 0;
}
#pragma mark - 13 函数什么时候需要返回数据[掌握]
1>什么时候定义函数的时候需要返回值,看函数的调用者需不需要一个结果,如果需要一个结果,那么就需要函数有一个返回值。
int panDuanOuShu(int num){
// 0 是假 非0 为真
if (num % 2 != 0) {
printf("不是一个偶数");
return 1;
}
printf("是一个偶数");
return 0;
// return !(num %2);
}
#pragma mark - 14 使用带返回值的函数注意细节[掌握]
"函数在定义好返回值之后,必须会有返回值。否则报错
但是函数有返回值,可以不接收
"例子
定义一个函数计算两个double数据的和,并且返回,调用这个函数
double addNum1andNum2(double num1,double num2)
{
return num1+num2;
}
int main()
{
double result = addNum1andNum2(1.1,2.2);
printf("%lf\n",result);
}
报错的信息:定义了函数的返回值类型,但是却没有返回
control reaches end of non-void function
函数在定义好返回值之后,必须会有返回值。否则报错
下面的代码就会报错!!!
int test(int num){
if (num % 2 == 0) {
printf("是一个偶数");
}else if(num % 2 == 1){
printf("是一个奇数");
}
}
#pragma mark - 15 函数的声明和定义 [掌握]
我们来想一想为什么?
因为编译器在编译代码的时候,是从上到下从左到右编译的,如果函数的定义放在调用的下面,编译时候遇到
调用的语句,就不知道有这个函数存在
main函数最好都写在第一位
声明和实现应该分开
声明和实现需要分开
作者: 赵安庆 时间: 2016-5-5 22:46
55555556666666
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |