2015-05-16 17:52:31 yuanptt 阅读数 290
  • 使用Objective-C进行iOS移动开发

    【课程特点】 1、190节大容量课程:包含了Objective-C语言大部分知识点; 2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会; 3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标; 4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间; 5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索; 【课程内容】 包含Objective-C语言的基本数据类型,基础语法以及进阶知识。同时还讲解了流程控制、字符串、集合类型、函数和闭包等。此外、面向对象、结构体、类Class,以及手动内存管理、自动内存管理、协议与抽象类型、错误处理、iOS开发中的常见概念、Xcode操作、多媒体编程、网络编程、数据解析和加密、Sqlite数据库、多线程编程、内购等实用功能也都有涉及!

    2082 人正在学习 去看看 李发展
一.什么是函数
  • 任何一个c语言程序都是有一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”。所以,你可以说c语言是由函数构成的。
二.函数的定义
1.定义函数的目的
  • 将一个常用的功能封装起来,方便以后调用
2.定义函数的步骤
  • 函数名:函数叫什么名字
  • 函数题:函数是干啥的,里面包含了什么代码
3.格式
  • 固定格式(很多语言的函数都是这么写的)
返回值类型  函数名(形式参数列表)
函数体
 }
三.函数调用

四.函数的参数
1.形参和实参的基本概念
2.形参个书和实参一致
3.参数的传递是值传递
4.参数名不能跟函数哪的局部变量同名
#include <stdio.h>


int printLine()
{
    printf("-------------\n");
    return 0;
}

int average(int num1, int num2)
{
    return (num1 + num2)/2;
}

int main()
{
    /*
    printLine();
    
    printLine();
    
    printLine();
     */
    
    int a = 10;
    int b = 9;
    
    int c = average(a, b);
    
    printf("c is %d\n", c);
    
    int a1 = 11;
    int b1 = 20;
    
    int d = average(a1, b1);
    printf("d is %d\n", d);
    
    return 0;
}


五.函数的返回值
1.返回值的基本概念,return的作用
2.void
3.return
void可以省略return
可以多次使用return
return后面不能有其它语句
4.函数的弱语法
如果没有写返回值类型,默认是int
如果写了返回值,可以不返回
调用一个没有定义过的函数
六.定义函数的步骤
1.明确函数作用,起一个有意义的函数名称
2.明确函数的参数和返回值
七.函数注意
不能嵌套定义函数
死循环调用,自己调用自己
不能重复定义,可以重复声明
#include <stdio.h>

// 形式参数,简称形参
int sum(int num1, int num2)
{
    // 函数体内部不能定义和形参一样的变量
    // int num1;

    num1 = 50;

    return num1 + num2;
}

/*
 return的作用:
 1> 退出函数
 2> 返回一个具体值给函数调用者
 
 返回值注意点
 1> void代表没有返回值
 2> 如果没有明确说明返回值类型,默认是返回int类型
 3> 就算明确声明了返回值类型,也可以不返回任何值
 
 默认情况下,C语言不允许两个函数的名称一样
 */

char test()
{
    return 'A';
}

/*
void test(int a, int b)
{

}*/

void test5()
{
    
}


int test3()
{
    printf("999999999\n");
}

// 如果不明确声明返回值类型,默认就是int类型
test2()
{
    printf("888888888\n");
    return 10;
}

int main()
{
    int c = test2();
    printf("c=%d\n", c);
    
    test3();
    //test();
    
    /*
    int a = 100;
    int b = 27;
    
    // a、b称为函数的实际参数,简称实参
    int c = sum(a, b);
    
    
    printf("a=%d, b=%d, c=%d\n", a, b, c);*/

    return 0;
}


八.函数的补充
1.main函数
返回值:0,正常退出;1,异常退出
2.printf函数
#include
返回值:字符串的长i度
十.函数的声明
1.函数的定义顺序
2.函数的声明作用:声明和定义类似于身份证和人的关系
3.只有函数声明、没有定义,编译警告、链接报错
十一. .h和.c文件的分工
1.单文件的坏处
一个文件的内容太多,不利于阅读、调试
多人修改同一个文件出问题
公司里面是团队合作
2.将函数抽取到另一个.c文件中
3.在其他文件中声明函数
4.将抽取到另外一个文件中
5.抽取步骤总结
.c文件写函数的定义
.h文件写函数的声明
十二.#include
1.预处理指令简介
2.#include的作用
纯粹是文件拷贝
3.#include<stdio.h>
stdio.h中有什么?链接的时候做了什么事情:把项目中所有相关联的.o目标文件、c语言函数库合并在一起,生成可执行文件。
<>和""的区别
4.#include的路径问题
代码笔记如下:
ptt.c
#include <stdio.h>
#include "pdd.h"

int main()
{
    int score1 = 100;
    int score2 = 70;
    
    int c = average(score1, score2);
    int d = sum(score1, score2);



    printf("平均分是%d\n", c);
    printf("总分是%d\n", d);
    
    // \n是一个转义字符
    // \t tab键
    // \" 一个双引号
    // printf函数返回的字符串常量的字符数,并不是字数
    // 1个汉字占据3个字符
    int e = printf("哈h\"\ta\n");
    
    printf("e=%d\n", e);
    
    return 0;
}

函数的定义.c文件 pdd.c
    
int average(int a, int b)
{
    return (a + b)/2;
}

int sum(int a, int b)
{
    return a + b;
}

int minus(int a, int b)
{
    return a - b;
}

int multiply(int a, int b)
{
    return a * b;
}

函数的声明.h文件 pdd.h
 
/*
 pdd
 编写函数的声明
 */
int average(int a, int b);
int sum(int a, int b);
int minus(int a, int b);
int multiply(int a, int b);

编译链接:cc ptt.c pdd.c
生成可执行文件
./a.out 输出结果
2015-06-09 15:51:37 white0702 阅读数 269
  • 使用Objective-C进行iOS移动开发

    【课程特点】 1、190节大容量课程:包含了Objective-C语言大部分知识点; 2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会; 3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标; 4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间; 5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索; 【课程内容】 包含Objective-C语言的基本数据类型,基础语法以及进阶知识。同时还讲解了流程控制、字符串、集合类型、函数和闭包等。此外、面向对象、结构体、类Class,以及手动内存管理、自动内存管理、协议与抽象类型、错误处理、iOS开发中的常见概念、Xcode操作、多媒体编程、网络编程、数据解析和加密、Sqlite数据库、多线程编程、内购等实用功能也都有涉及!

    2082 人正在学习 去看看 李发展

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-----指针函数与函数指针

一、指针函数

(1)定义:返回值为一个某一类型指针的函数称为指针函数。

(2)格式:类型说明符* 函数名(形参列表);*表示返回值为一个指针或地址。

(3)程序示例如下:

#include<stdio.h>

int* max(int x,inty)

{

return x>y?x:y;

}

int main(int argc,const char* argv[])

{

  int a=3,b=4;

int *p=max(3,4);

printf("%p\n",p);

return 0;

}

该函数打印输出p的地址,该函数属于值传递。

二、函数指针

(1)定义:存放函数首地址的指针变量就是函数指针

(2)格式:类型说明符 (*变量名)(函数的参数列表);

(3)程序示例如下:

#include <stdio.h>

int sum(int x,int y)

{

return x+y;

}

int main(int argc, const char * argv[])

{

int s=0;

int (*p)(int a,int b); //定义函数指针

p = sum; //给函数指针赋值,p指向sum,sum存的就是函数的首地址。

        s = p(23,34);

printf("%d\n",s);

return 0;

}

该函数打印输出结果为57。

注意:

1、函数指针变量不能进行算术运算,这是与数组指针不一样的。

2、函数调用中*两边的括号不能少,另外,*只是一个符号,不能认为是取值运算。

2015-03-07 00:05:37 cowozo 阅读数 190
  • 使用Objective-C进行iOS移动开发

    【课程特点】 1、190节大容量课程:包含了Objective-C语言大部分知识点; 2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会; 3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标; 4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间; 5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索; 【课程内容】 包含Objective-C语言的基本数据类型,基础语法以及进阶知识。同时还讲解了流程控制、字符串、集合类型、函数和闭包等。此外、面向对象、结构体、类Class,以及手动内存管理、自动内存管理、协议与抽象类型、错误处理、iOS开发中的常见概念、Xcode操作、多媒体编程、网络编程、数据解析和加密、Sqlite数据库、多线程编程、内购等实用功能也都有涉及!

    2082 人正在学习 去看看 李发展

-------------------------------------- android培训、java培训、ios培训期待与您交流! --------------------------------


函数

不同的功能写在不同的函数里



1.定义函数的目的

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


2.定义函数的步骤

1>函数名:函数交什么名字

2>函数体:函数是干什么的,里面包含了什么代码


3.函数的定义格式

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

intmain ()

{

函数体

}


4.定义函数需要明确的东西

1>起一个有意义的函数名

2>确定参数

3>是否要返回值 return


练习题

//定义abcd的变量,求平局值,调用平均值函数.


#include <stdio.h>

//这个函数是用来求平均值,用得时候直接调入main函数即可.


// 返回值类型    函数名             形式参数列表

    int        average         (int num1,int num2)


        {

            return (num1+num2)/2;//函数体

        }

//num1,num2等于在average的函数里面定义的一个做运算的变量.和别的地方的没有关系.




int main()

{

//a=10 b=9 c=ab的平均值.不用在麻烦的算,直接调用average函数即可,

    int a =10,b = 9;

    int c= average(a,b);

    printf("c的值为%d\n",c);

    

//aa=100 bb=50 ,d=aabb的平均值,不用在麻烦的算,直接调用average函数即可,

    int aa =100,bb = 50;

    int d= average(aa,bb);

    printf("d的值为%d\n",d);

    

    

    

    return0;

}


/*

 定义3个函数,

 求两个整数的差

 打印一条横线

 打印n条横线

 定义函数的步骤

 1>根据函数的作用,起一个有意义的名称

 2>确定函数的形参个数

 3>确定函数的返回值

 */

#include <stdio.h>


void line(int n)

{

    for (int i ;i<n ;i++ )

    {

        printf("***********\n");

    }

}

void printline()

{

    printf("--------\n");

}


int minuse(int a,int b)

{

   return a - b;

}


int main()

{

    line(5);

    printline();

    printf("%d\n",minuse(10,8));

    

    return 0;

}




形参与实参

形参

把int a (int num1,int num2)这个值传入大括号中 接受外界传进来的值

#include <stdio.h>

int sum(int num1,int num2)

{

return(num1+num2);

} |     |

int main()        | |

{ |  |

int a =1000;    |

int b =270;-----|

int c =sum(a,b)   //称为函数的实际参数(简称实参)

printf("c is %d\n",c);  

return 0;

}


调用函数时 实参会把对应的值掉给形参

是参与形参的个数必须相同

int sum(int sum1,int sum2)

{

int sum =10这样是不可行的,需要和括号里面的相同,属于重复定义

return:(num1+num2)修改形参不会更改实参的值

}




1.形式参数:定义函数时,函数后面的参数(简称形参)

2.实际参数:调用函数时,传入的具体数据(简称实参)

3.实参个数必须等于实参个数

4.函数体内部不能定义和形参一样的变量

5.如果是基本数据类型,作为函数形参,纯粹是值传递

修改函数内部形参的值,并不会影响外面实参的值.

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




返回值 return

return的作用

1>退出函数

2>返回一个具体只给函数调用者


void test()

{

return---可用可不用,视条件而顶

}


void代表没有返回值

不用在写.return 0,或者 return 返回值


2.如果不明确声明返回值类型,默认就是int类型

test()

{

}


1.默认情况下,不允许有函数的名称一样

2.函数不能嵌套定义

3.函数不能重复定义,但可以重复声明

函数声明可以直接写入main函数,调用的定义之前

4.如果有函数的声明没有函数的定义

1>编译器可以通过,因为编译智慧检测语法合理不合理

2>链接报错,因为链接的时候会检测函数是否定义



<stdio.h>    h= header file   头文件

1.函数的定义放在.c文件 声明放在.h文件

2.如果要使用某个.c文件种定义的函数,只需要#include这个,c文件对应的.h文件就行

3..h文件的作用,被别人拷贝,编译连接的时候不需要管.h文件


include的作用

1>拷贝右边文件所有内容到#include的位置

2>自定义的文件要用""双引号  系统自带的用<>

3>#include <stdio.h> 的目的是:拷贝printf函数的声明


多文件开发

张三写main函数-.c  -. o

李四写其他函数 -c. -. o     最后cc张三.o   李四.o=./a.out



链接:

把项目中所有相关联的.o目标文件和C语言函数库合并在一起,生成可执行文件


return 返回0  代表正常退出

   返回1 或别的数,代表异常退出

但无论返回多少都不影响程序,只是系统会做日志记录


\n是转移字符.有特殊含义的字符

.t代表输出一个tab键

在printf中一个中文相当于3个字符

printf算的是有多少个字符数,不是字数

 


2015-04-06 09:48:06 songdezhong 阅读数 633
  • 使用Objective-C进行iOS移动开发

    【课程特点】 1、190节大容量课程:包含了Objective-C语言大部分知识点; 2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会; 3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标; 4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间; 5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索; 【课程内容】 包含Objective-C语言的基本数据类型,基础语法以及进阶知识。同时还讲解了流程控制、字符串、集合类型、函数和闭包等。此外、面向对象、结构体、类Class,以及手动内存管理、自动内存管理、协议与抽象类型、错误处理、iOS开发中的常见概念、Xcode操作、多媒体编程、网络编程、数据解析和加密、Sqlite数据库、多线程编程、内购等实用功能也都有涉及!

    2082 人正在学习 去看看 李发展
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

本篇博客学习C语言的第三篇记录博客,主要包括:函数、内存剖析,主要记录内容如下(只记录新学习到的知识):

一、函数

1、函数体内部不能定义与函数形参一样的变量,编译的时候会报错(重复定义);

2、如果是基本数据类型作为函数形参,形参实参之间纯粹是值传递,修改函数内部形参的值并不会影响函数外实参的值;

3、如果不明确声明函数的返回值类型,默认为int类型;就算明确了返回值类型,也可以不返回值;

4、C语言中,默认情况下不允许有函数的名称一样,并且函数不能够被嵌套定义;

5、函数不能够被重复定义,但是可以被重复声明;如果有函数的声明没有函数的定义,编译可以通过(因为编译的时候只检查代码的语法是否正确),但是链接的时候会报错(链接的时候会检查函数是否被定义);

6、include语句:作用是拷贝引用文件的所有内容到#include所在的位置,自定义文件用"",系统自带文件用<>;

二、内存剖析:

1、十进制、二进制、八进制、十六进制的赋值方式及输出方式请参照下述代码及表格:

#include <stdio.h>
int main()
{
    //默认为十进制
    int number1 = 12;
    //0b开头代表为二进制
    int number2 = 0b1100;
    //0开头为八进制
    int number3 = 014;
    //0x或者0X开头为十六进制
    int number4 = 0xc;
    //%d或者i%会将后面变量的值转换为十进制输出出来、%o代表八进制、%x代表十六进制
    printf("%d\n%d\n%d\n%d\n", number1, number2, number3, number4);
    return 0;
}

2、内存是以字节为单位存在的,内存字节的地址是16进制;

3、 四个修饰变量类型的类型说明符:

short(一般只修饰int):会将int的字节缩短为2位,printf输出时依然用%d作为占位符,short int 可以用short代替;

long(一般只修饰int):将int的字节扩充为8位,printf输出时用%ld作为占位符,long int也可以用long代替 ,为了区别long与普通int,在赋值时通常会在值的最后加l作为区分;

signed(一般只修饰int):代表有符号整数(正数、负数、0),与int一样,首位默认为符号位,最大值为2的31次方-1;

unsigned(一般只修饰int):代表无符号整数(正数、0),即在内存中int的存储没有符号位,最大值为2的32次方-1;

4、按位异或 ^ 的规律:

1.>相同数值进行异或,结果为0,例如9^9=0;

2.>多个整数进行异或的结果与顺序无关,例如:9^5^6=9^6^5;

3.>任何数值与0异或,结果还是原数值;

4.>a^b^a=b;

5、重点课后习题:

/*
 编写一个函数,用来输出整数在内存中的二进制形式
 */

#include <stdio.h>
int main()
{
    void printBrinary(int number);
    int a;
    scanf("%d", &a);
    printBrinary(a);
    return 0;
}

void printBrinary(int number)
{
    for (int i = sizeof(number)*8 - 1; i >= 0; i--) {
        if(i % 4 != 0 || i == 31)
        {
            printf("%d", number >> i & 1);
        }
        else
        {
            printf("%d ", number >> i & 1);
        }
    }
}



没有更多推荐了,返回首页