| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C语言整理 -> 正文阅读 |
|
[C++知识库]C语言整理 |
函数C语言中函数的调用作用避免出现代码复制的情况,提高代码质量,方便日后维护。 举例: #include<cstdio> int i,sum; for(i=1,sum=0;i<=10;i++){ ? ?sum+=i; } printf("%d到%d的和是%d",1,10,sum); for(i=20,sum=0;i<=30;i++){ ? ?sum+=i; } printf("%d到%d的和是%d",20,30,sum); for(i=35,sum=0;i<=45;i++){ ? ?sum+=i; } printf("%d到%d的和是%d",35,45,sum); 以上代码可以改成以下代码: void sum(int begin,int end){ ? ?int i,sum=0; ? ?for(i=begin;i<=end;i++){ ? ? ? ?sum+=1; ? } ? ?printf("%d到%d的和是%d",begin,end,sum) } int main() { ? ?sum(1,10); ? ?sum(20,30); ? ?sum(35,45); ? ?return 0; } 可见,函数调用可以有效的避免代码重复的情况。 函数的组成void sum(int begin,int end){ ? ?int i,sum=0; ? ?for(i=begin;i<=end;i++){ ? ? ? ?sum+=1; ? } ? ?printf("%d到%d的和是%d",begin,end,sum) } 以以上代码为例,"void sum(int begin,int end)"为函数头,其中"void"为返回类型,"sum"是函数名,括号里的是参数表,而这一部分: { ? ?int i,sum=0; ? ?for(i=begin;i<=end;i++){ ? ? ? ?sum+=1; ? } ? ?printf("%d到%d的和是%d",begin,end,sum) } 是函数体,函数的主要部分。 函数的参数和变量传值
注意:函数是不允许函数嵌套的 数组定义:创造出一系列的"房间",用于储存常量。 (指针相当于房间号) 两数组之间需要赋值只能用遍历的方式如: int a[10]; int b[10];//若要使两数组中的值相等 for(int i=0;i<10;i++){ ? ?a[i]=b[i]; } 二维数组如: int a[3][5] 可以理解为三行五列的表格,具体化如下: 数组的妙用
在定义中说了,数组可以储存常量,也就是说,数组可以用来记数。如题 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 宇宙集团对QIT的课程做了一个满意度调查,一共在校园内抽取了N个同学,对本学期的M种课程进行满意度调查。宇宙集团的小Y想知道,有多少门课是被所有调查到的同学都喜欢的。 #include<stdio.h> int main (){ ? ?int A,N,M,z,x=0; ? ?int a[1500]={0}; ? ?scanf("%d%d",&N,&M); ? ?for(int i=0;i<N;i++){ ? ? ? ?scanf("%d",&A); ? ? ? ?for(int j=0;j<A;j++){ ? ? ? ? ? ?scanf("%d",&z); ? ? ? ? ? ?a[z]++; ? ? ? } ? } ? ?for(int h=0;h<=M+1;h++){ ? ? ? ?if(a[h]==N){ ? ? ? ? ? ?x++; ? ? ? } ? } ? ?printf("%d",x); ? ?return 0; } 用数组的下标来作为需要记的数,可以做到意想不到的效果。 函数递归递归递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。 当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。 所以递归要有两个要素,结束条件与递推关系 PS:递归的时候,每次调用函数,计算机都会为这个函数分配新的空间,这就是说,当被函数返回的时候,调用函数中的变量依旧会保持原先的值否则也不可能实现方向输出。 例题
递归必须要有结束条件
特点
效率
PS:栈的概念会在下面进行叙述。 特点循环能干的,递归也能干,反过来不一定,当然能用循环干的尽量不用递归 指针由"&"和某些变量组成,其中&符号用于取地址。但是有些不能如:
可以取以下地址:
所谓指针,就是储存地址的变量,如: int i; int* p=&i; int* p,q;//注意,这里的变量q不属于指针,如果要使q变为指针,要变为int* p,*q. int *p,q;//同上。 那么,似乎指针和普通的变量初始化差不多,那我们为什么要费这么大劲去做一个指针呢? 指针的真正作用在于它可以使在子函数里的变量访问到主函数的变量,举个例子: #include<cstdio> void f(int *p); void g(int k); int main (void){ int i=6; printf("&i=%p",&i); f(&i); g(i); return 0; } void f(int *p){ printf("p=%p\n",p); printf("*p=%d\n",*p); } void g(int k){ printf("k=%d",k); } 输出结果是: &i=0xb5ff51d70 p=0xb5ff51d70 *p=6; k=6 可以看到,i的地址与p的地址相同,i的值与*p的值相同。 那接下来,我们就要做一个邪恶的事情:改变 * p的值。然后观察i的值会不会变。于是有: #include<cstdio> void f(int *p); void g(int k); int main (void){ int i=6; printf("&i=%p",&i); f(&i); g(i); return 0; } void f(int *p){ printf("p=%p\n",p); printf("*p=%d\n",*p); *p = 26;//改变*p的值 } void g(int k){ printf("k=%d",k);//因为函数g(),所以g函数会输出i的值 } 输出结果: &i=0xb5ff51d70 p=0xb5ff51d70 *p=6;//值不变是因为f函数没有二次调用 k=26 k=26,意味着i的值被改变了。 我们都知道,在C中,函数调用中参数转移时一种值的传递,我们把值传进了函数,所以函数的参数与他们调用的地方没有任何关系。现在,时代变了。我们仍然坚持说,这种情况下,仍然时值的传递。只不过&i的地址值传进了f函数中,但是因为传进来的是地址,所以我们依然可以*P这个地址去访问i变量,从而改变它。所以,指针赋予了变量接触函数外变量的途径。所以呢,我们就可以同过指针把函数值待回到原函数。 是不是很懵?总结一下: 我们可以现象出一个房间,而这个房间就是计算机的储存空间,而这个空间可以有多层楼,有很多房间。楼就是“函数”,而房间就是变量“住”的地方,每个房间都有地址,而门牌号,而门牌号就是告诉你地址的工具,也就是“指针”。 所以啊,我们可以通过门牌号(指针),找到房间(变量),从而改变他,又因为房间在同一空间下,所以会无视函数间的阻隔。 Java学习特性与优势
Java的三大版本
J D K,J R E ,J V M
PS:从上至下呈包含关系,也就是J D K包含J R E ,J R E 包含J V M,再简单一点就是J D K是爷爷,J R E是爸爸,J V M是孙子。 Hello worldpublic class world{ public static void main(String[] args){ System.out.print("Hello world!"); } } 最简单的程序。 常见的Dos指令
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:58:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |