首页 > 编程 > C++ > 正文

C++幼儿园[3] - 数组与函数

2019-11-11 07:17:02
字体:
来源:转载
供稿:网友

春节歇了几天之后就不想干活了 果然,人不做事..就会变懒。

惯例先说说上次

遗留的问题:

if…else if…else

把这当成三个语句而不是两个。 虽然说else if 看上去就是else+ifelse if 占一行

else if(){ ...}else if(){ ...}

else + if 就要占两行了,自动缩进之后,多级就会变得很臃肿

else if() { ... } else if() { ... }

变量命名

别老用abc xyz了,更不要abc xyz ABC XYZ一起上,我看着都头大,写程序毕竟不是做数学题(而且别学教程啊,教程只是为了方便) 可以有如下替换(用有实际意义的单词): grade credit mark point number(num) result sum temp(temporary) 这种名字怎么起,现阶段原则是,开心就好...

另外,一般见到XY都是坐标 abc做临时变量也是可以的,所以GPA计算器里写abc也将就吧(用来记录临时的值) 介绍一种常用的驼峰命名法:

变量&函数: int i; //或者j,k.用作循环变量或跳出循环条件int temp; //临时记录double chaoChaoLength; //超超身高,注意分成3个语块,第一块首字母小写,其他块首字母大写bool isHeBullShit; //bool型可用“is”开头,同上注意大小写const int MAX_LENGTH;//常量,全大写,用下划线区分语块类:class GayGay //每块首字母都大写{ ...};

下面讲正题

数组

顾名思义,就是一组数,可以是任何类型的 这组数有序存储,且可重复(数组与集合概念相对,集合无序且不可重复)

数组的定义:数据类型 数组名[常量]

int a[5]; //数组a可包含5个数a[0] = 1; //这里a[0]表示数组a的第一个数a[4] = 5; //将数组a的最后一个数赋值 5/**就是说我们定义a[5]的这个“5”表示有5个数*访问时从下标0开始,a[0] a[1] a[2] a[3] a[4]*///上面只给2个数赋值了,其他数是多少?把整个数组输出出来看看for (int i = 0; i < 5; i++){ cout << a[i] << endl;}int b[3] = { 6,9,4 }; //数组初始化int c[] = { 0,0,0,0,5 }; //直接赋值时不需声明数组大小int x = 6;int d[x]; //敲黑板,划重点const int y = 6;int e[y];

偷懒贴个教程,请认真阅读 http://c.biancheng.net/cpp/biancheng/view/151.html

有一维数组肯定就有多维数组了,跟一维数组同理,就是数组套数组 http://c.biancheng.net/cpp/biancheng/view/152.html

函数

http://c.biancheng.net/cpp/biancheng/view/31.html 写得挺好的,嗯,请认真阅读

补充: 函数在被调用的时候,它所表示的值就是返回值,可以被当做普通变量,做赋值,判断等操作

#include <iostream>using namespace std;int square(int x) //{ return x*x; }void main(){ if (!square(0)) //square(0)返回值为0(false),!是“非”的意思,!false就是true了 { cout << "hey"; } bool b = square(1); //b被赋值为true了}

常用系统函数(标准库函数)

也就是c++的创造者写好的函数

会用系统函数能节省大量时间 但有时候需要知道那些函数怎么实现的(提升自己or避免因未知原理而可能出现的问题) 遗憾的是c++中貌似不能方便地利用IDE的“转到定义”查看系统函数体。

下面列举一些常用的,请眼熟他们的名字,不仅c++,其他语言的这些函数名字也都大同小异

函数 解释 头文件
sqrt() 求平方根 cmath
abs() 求绝对值 cmath
sin(),cos(),tan() Exactly what you think cmath
ceil(),floor() 天花板(地板):不小(大)于该值的最小(大)整数 cmath
log(),log10() 分别表示lnxlog10x cmath
tolower(),toupper() 转换成小写/大写字母 iostream
time() 返回1970/1/1零点到目前的秒数 ctime
rand(),srand() 随机数相关 iostream

形参,实参,作用域

老生常谈的问题

首先需要知道,c++程序是按顺序执行(编译)的,一句一句,直到条件控制、跳转语句。也就是说下面的一段程序是错误的

int a=b;int b=1;

c++中,一对大括号内的区域称为一个作用域,该作用域内声明的变量,对域外不可见 所以,程序执行过一个作用域之后,该域内声明的变量会消失(内存释放) 但是,在域外(特指作用域前)声明的变量,在作用域内做的改变会保留

试试看下面的代码

void main(){ int a = 0; { int b = 1; a = b; } cout << a; cout << b;}

在域外已经不存在b这个变量了,但是域内对a做的改变仍然保留

函数有一对大括号,然而并不能跟作用域等同 比如

void nega(double x){ x = -x;}void main(){ int x = 6; nega(x); cout << x; //x仍为6}

x没有改变,因为在nega()的这个括号里,double x 就是一个新的变量了(简称“新x”),它的值为调用时的6,也就是“老x”的 也就是说,调用的时候,仅仅是把x的值传了进去,函数体内的x相当于一个备份,对这个备份做任何操作,无法影响“老x”。


今天就先做对它们做初步的介绍

如“数组怎么作为函数的参数”,“怎么用函数交换两个实参的值”之类的问题,等学习了指针的内容之后就会明白。 (以上两个问题即地址与值问题)

请自己在下面练习一下怎么使用数组与函数。

提示:

void test(int arr[], int length)

可以传数组进函数,用length表示数组长度

小作业(不用交):

声明一个 int 型数组(乱序),对其元素进行排序 如 原数组 0 7 9 5 1 3 排序后 0 1 3 5 7 9 整个过程可写在main函数中,不需另写函数把之前的作业“GPA计算器”和“输出质数”变成函数,从main函数里分离出来 要求: GPA计算器:无输入,返回值为计算所得GPA 输出质数:输入整数n,输出从0到n的质数,无返回值 并在main函数中调用上面两个函数
上一篇:C++入门 引用详解

下一篇:c++ extern总结

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选