函数

相当于功能模块,通过调用函数,能直接实现函数的功能

函数定义: 返回值类型 函数名(参数){

函数体

}

作用: 避免写大量的重复代码

能够使代码更加精简

四种形式:

无参无返回值

void name ();

无参有返回值

int name ();

有参无返回值

int name (int a,int b);

有参有返回值

返回值类型: 无返回值类型,写成 void

C语言中不能返回数组

如果有返回值,必须使用return返回

函数名: 命名规范和变量名一样,与返回值类型用空格隔开

参数: 放在与函数名紧挨着的括号内,括号内可以有多个参数,每个参数都要指定数据类型,不管数据类型是否相同

return: 返回指定的数据类型,由函数的返回值类型决定什么类型的数据

碰到return,函数执行结束,return后面的代码不再执行

// 不能在函数里面调用函数

函数调用: 当函数定义在调用处的下面时,需要函数声明(函数声明:将函数的大括号变成分号,放在调用处所在函数的上面  void printfHelloWorld();)

函数定义在调用处所在函数的上面时,不需要函数声明

* 1. 建文件 点击你想放的位置->Command+N->OS X->Source->C file

* 2. 在.h 里面声明一个函数, .c 实现这个函数

* 3. 该文件内导入该文件的头文件,也就是.h文件

* 4. 直接调用函数就行

函数的嵌套调用

/*

* s = (2*2)! + (3*3)! +(4*4)!

* 1、整型数的平方

* 2、一个整型数的阶乘

* 3、三个整形的平方的阶乘的和

*/

#includeint method2(int a)

{

int sum = 1;  // 用sum获取到a的阶乘

for (int i = 1; i<=a; i++)

{

sum *= i;

}

return sum;

}

int method1(int n){

int sum = 0; //sum接受最终的结果

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

{

//    sum +=i*i;  (用一个函数计算阶乘)

sum += method2(i*i);  //通过method2获取到i值平方的阶乘,再通过sum累加i值平方的阶乘

}

return sum;

}

int main(){

int sum = method1(4);

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

}

递归函数

/*

本质:自己调用自己

5! (jiecheng(5))

5*4! (5*jiecheng(4))

4*3! (4*jiecheng(3))

3*2! (3*jiecheng(2))

2*1! (2*jiecheng(1))

#includeint jiecheng (int n){

if (n == 1)

{

return 1;

}

return n*jiecheng(n-1);

}

int main (){

printf("n的阶乘=%d\n",jiecheng(5));

}

结构体概念

结构体:也相当于一个容器,与数组的本质区别在于,数组只能存放一种数据类型,而结构体能够存放多种数据类型

结构体能够直接复制,可以通过结构体的这种特性,让数组直接赋值

利用结构体可以创造多种数据类型

结构体的声明

格式:struct 结构体名

{

属性类型 属性名1;

属性类型 属性名2;

...

属性类型 属性名n;

};

定义结构体变量

结构体名字 结构体变量 = 初值;

修改结构体变量的内容,通过给结构体变量.相应的属性来赋值或者取值

定义过的结构体变量,不能再通过大括号来赋值

结构体的优化

typedef 能够给数据类型重命名

格式:typedef type name

type:原数据类型的名字

name:重新给原数据类型设置的名字

结构体嵌套

typedef struct Brithday{  //创建一个学生体并重命名

int year;

int month;

int day;

}Brithday;

typedef struct Student{  //创建一个学生体并重命名

char name[20];

Brithday brithday; //结构体的嵌套,也可以不嵌套,用结构体Brithday的内容替换

}Student;

int main (){

Student pangrenmeng = {"pang",{1993,03,16}};

int month = pangrenmeng.brithday.month;

指针概念

1.计算机在内存中存放数据,首先需要为数据找到一块地址

2.每块地址都有一个编号,通过编号找到这块地址

3.地址的编号其实就是指针

4.指针指向的就是计算机磁盘内的一块地址

5.指针变量:就是用来存储地址的

格式:

数据类型 *变量名 = 赋初值;

'*'就是一个标志符:用来表明这个变量是指针变量

数据类型:用来指示变量所指向的地址,存放什么样的数据

赋初值:因为定义的是指针变量,所以赋初值时要给一个地址

'&'取地址符

格式:

&变量名

在变量名前加一个&,就代表取到了该变量所在的地址

取值运算符

取值格式:

*指针变量

在变量的前面一个*代表取出来改地址的值

使用指针来交换两个变量的值

int i = 3;

int e = 7;

int * r = &i;

int * t = &e;

int temp = 0;

temp = *r;

*r = *t;

*t = temp;

printf("i = %d\ne = %d\n",*r,*t);

int y = 7;

int x = 9;

int * s= &y;

int * z= &x;

int temp1 = 0;

temp1 = *s;

*s = *z;

*z = temp1;

printf("y = %d\nx = %d\n",*s,*z);

指针与数组

数组: 定义一个数组,系统会分配一块连续的内存空间,数组名就是该数组里面第一个元素的地址

数组名就是一块地址

char *strings[3] = {"iPhone" , "Android" ,"win8"};

printf("%c\n%s\n%s\n",*(strings[1]+1),*(strings+1),*(strings+2));

指针与字符

char string[] = "awfr2";

char test = *(string+1);

*string = test;

*(string+1) = 'q';

*(string+4) = 'q';

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

结构体指针

// 定义一个英雄结构体

typedef struct Hero

{

char name[10];

int blood;

char sex;

}Hero;

int main() {

Hero gailun = {"gailun",350,'m'};   //定义一个Hero类型的指针

Hero *p = &gailun;  //读取Hero类型指针里面的数据

printf("%s的一级血量是%d\n",(*p).name,(*p).blood);

Hero datou ={"datou",300,'m'};

Hero *p1 = &datou;

printf("%s的一级血量是%d\n",(*p1).name,(*p1).blood);

结构体数组

int main(){

Hero gailun = {"gailun",350,'m'};

Hero aixi = {"aixi",300,'w'};

Hero ruizi = {"ruizi",500,'m'};

// 定义一个结构体数组

// 数组名代表的是数组的第一个元素的地址

Hero list[] = {gailun,aixi,ruizi};

//定义一个结构体指针,用来存放地址

Hero *hero = list;

printf("%s的血量%d\n",(*hero).name,(*hero).blood);

printf("%s的血量%d\n",(*(hero+1)).name,(*(hero+1)).blood);

printf("%s的血量%d\n",(*(hero+2)).name,(*(hero+2)).blood);

指针的指针

int main(){

//定义变量a 系统给地址

int a = 6;

//定义一个指针变量,系统还会给地址

int *p = &a;

//定义一个指针变量,来存储变量p的地址

int **pp = &p;

//通过双星找到指针的指针里面的值

printf("a=%d\n",**pp);

c语言中int(*t) n,C语言基础知识(下)相关推荐

  1. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  2. c语言int作用,c语言中int的用法

    C/C++编程语言中,int表示整型变量,是一种数据类型,下面学习啦小编就跟你们详细介绍下c语言中int的用法,希望对你们有用. c语言中int的用法:整型int C 语言提供了很多整数类型(整型), ...

  3. c语言int作用,c语言中int的用法有哪些

    c语言中int的用法有哪些 C/C++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同下面小编给大家整理了c语言中int的用法 ...

  4. c语言int2字节负数类型范围,c语言中int范围是多少?

    C语言中int的取值范围是:"-2147483648 ~ 2147483647".int类型在C语言中占4个字节,即32个二进制位:当表示正数时,最高位为符号位(0):当表示负数时 ...

  5. c语言int的取值范围源程序,C语言中int的取值范围是多少

    C语言中int的取值范围是多少 发布时间:2020-07-03 11:35:02 来源:亿速云 阅读:104 作者:Leah C语言中int的取值范围是多少?针对这个问题,这篇文章详细介绍了相对应的分 ...

  6. int在c语言中的作用,C语言中int,Uint,uint16等有什么区别以及用处

    C语言中int,Uint,uint16等有什么区别以及用处.在C中,既然有了int,为什么还要有uint?特别是uint16,uint32等又有什么用?他们有什么区别?" --------- ...

  7. c语言double类型是几字节,c语言中int long float double 等类型所占字节及输出表示(转)...

    16位编译器 char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 doub ...

  8. c语言数据类型 占字节最少,C语言中int型是所占字节最短的数据类型。

    C语言中int型是所占字节最短的数据类型. 更多相关问题 [单选,A1型题] 满而不痛者,此为痞,载于() [单选,A4型题,A3/A4型题] 钱某,男,16岁,近日因饮酒饱食后出现胃脘胀满疼痛,嗳腐 ...

  9. c语言int16位数据范围,c语言中int取值范围为16位指的是什么16位

    1.c语言中int取值范围为16位指的是什么16位 计算机用二进制表示数值,最小单位就是位(bit),可以储存0或1,16位就是有16个储存0或1的位,其中左边第一位是符号位,0代表+ .1代表-. ...

最新文章

  1. C#里面Console.Write与Console.WriteLine有什么区别????
  2. 在pcduino上实现图像识别的程序
  3. VTK修炼之道37:图像平滑_高斯滤波器
  4. POST方式发起下载请求
  5. [转]ASP.Net篇之Session与Cookie
  6. Shodan新手入坑指南
  7. 【算法】数组与矩阵问题——找到无序数组中最小的k个数
  8. configure 查找依赖库_由浅入深:Python 中如何实现自动导入缺失的库?
  9. 使用php-amqplib连接rabbitMQ 学习笔记及总结
  10. 软件外包相关职业规划
  11. C++异常处理:try,catch,throw,finally的用法
  12. access计算机二级改工号,Access新手来看:如何更改表/窗体/报表...得名字
  13. Tomcat - SSL操作大全
  14. android andbase,andbase
  15. ugui 九宫格和图片切割
  16. oracle中日期格式的注意事项
  17. Echarts 3D饼图开发
  18. 为什么要用用例图 用例图是什么 用例图怎么画 用例图有哪些元素
  19. Feem(局域网文件传输工具)官方版
  20. 深度解析FUTABA的SBUS协议(/天地飞遥控器的WBUS协议/Robomaster接收机的DBUS协议)到底是啥?

热门文章

  1. 【Mac brew】代理安装brew insall
  2. 数组的几种定义方式及初始化
  3. qt中dll缺失以及无法启动程序的正确解决方法
  4. 什么样的 python 可以可谓专业 PyPI 项目?刚刚学到三个概念:pep8、Sphinx、pytest与GitHub Action的集成
  5. iOS中真机连接电脑运行程序出现问题
  6. PYNQ实战笔记(一)————常用的代码使用及配置技巧-持续更新
  7. ExcelReport第二篇:ExcelReport源码解析
  8. 支付宝sdk java对接_java后台支付宝app支付调用sdk进行支付
  9. 华为交换机eth口作用_华为交换机口如何绑定端口号
  10. 放下十样东西,你会更优秀!