菜鸡学习C++第二天
本菜鸡写博客的主要目的是加深印象,部分地方就会按照自己能够理解的方式进行描述,多多见谅。
1、C++的语句
先Po上一段代码:
#include<iostream.h>
int main()
{
int age;
age = 20;
cout<<"Now,I'm ";
cout<<age;
cout<<" years old.";
cout<<endl;
age = age + 1;
cout<<"Next year, l am "<<age<<" years old."<<endl;
cin.get();
return 0;
}
运行结果如下所示
Now,I'm 20 years old.
Next year, l am 21 years old.
声明语句
将信息储存在计算机中,需要指出信息的存储位置和所需的内存空间。
在C++中,使用声明语句来指出存储类型并提供位置标签。如上例中的
int age;
表示程序需要足够的存储空间来存储一个整数,并且给存储单元指定名称,如上例,用age来标识存储在该单元中的数据,age被称为变量,因为他的值可以修改。C++中,所有的变量都必须被声明。
赋值语句
赋值语句就不做过多阐述,和高中所学习到的伪代码差不多,只需要遵循语言要求就行,赋值是从右往左进行,如上例中的
age = 20;
age = age+1;
都被称作赋值语句。
接下来讨论一下字符串 ‘20’ 和整数 20 的天壤之别:
计算机储存字符串 ‘20’ 是存储书写该字符串所使用的字符,即‘ 2 ’ 和 ‘0’
程序在内部存储字符 2 和字符 0 的编码。
而计算机存储整数,是将20转换成二进制数进行存储,而不是单独存储每一个数字。
更多语句
下面我将调整一下上面的程序,使程序运行时能输入一个值,代码如下:
#include<iostream.h>
int main()
{
int age;
cout<<"what's your age?"<<endl;
cin>>age;
cout<<"Now,I'm ";
cout<<age;
cout<<" years old.";
cout<<endl;
age = age + 1;
cout<<"Next year, l am "<<age<<" years old."<<endl;
return 0;
}
运行结果如下:
what's your age?
20
Now,I'm 20 years old.
Next year, l am 21 years old.
这两个程序区别在于,第二个使用cin来读取键盘输入。
使用cin
上面的语句表明,从键盘输入的值20最终赋值给age变量,下面就是执行这项功能的语句:
cin>>age;
可以看出,信息从cin流向age。
这里先不做过多阐述。
类方面的简介
类是用户定义的一种数据类型。要定义类,需要描述他能够表示什么信息和对数据执行哪些操作。
类之于对象就像类型之于变量。
类描述了一种数据类型的全部属性(包括可使用它执行的操作),对象是根据这些描述创造的实体。
类在后面会使用实例继续补充介绍。
2、函数
函数用于创建C++程序的模块,对C++的OOP1定义至关重要,因此必须熟悉它,现在讨论函数的基本特征。
C++函数分为两种:有返回值的和没有返回值的,下面先看一个有返回值的函数。
使用有返回值的函数
x = sqrt(6.25);
表达式sqrt(6.25) 将调用sqrt() 函数,圆括号中的值6.25是发送给函数的信息,被称为传递给函数。以这种方式发送给函数的值叫做参数。函数sqrt() 得到的结果为2.5,并将这个值发送给调用函数;发送回去的值叫做返回值(return value)。可以这么认为,语句中的函数调用部分被替换成了返回值。因此这个例子将返回值赋给 x 。简单地说,参数是发送给函数的信息,返回值是从函数中发送回去的值。
下面PO上一段完整的代码以供理解:
#include <iostream.h>
#include <cmath>
int main()
{
double area;
cout<<"Enter the floor area,in square feet ,of your home: ";
cin>>area;
double side;
side = sqrt(area);
cout<<"That's the equivalent of a square "<<side
<<" feat to the side."<<endl;
cout<<"How fascinating!"<<endl;
return 0;
}
运行结果如下所示:
Enter the floor area,in square feet ,of your home: 1600
That's the equivalent of a square 40 feat to the side.
How fascinating!
下面将解释一下代码中 double 含义:
double 也是一个数字类型,指的是可能带有小数的数字,即实数。
声明 double 与 声明 int 变量使用的方法相同。
double 类型覆盖的范围比 int 类型大得多。
C++可以在程序任何地方声明新变量,可以在使用时再声明。C++还允许如下操作:
double side = sqrt(area);
函数变体
有些函数需要多个参数,这些参数使用逗号分开,如数学函数pow(),pow()函数接受两个参数,用来计算x的n次方,例如计算5的8次方:
answer = pow(5,8);
也有些函数不接受任何参数,例如stdlib.h库中的rand()函数,作用是随机生成一个整数并返回。代码如下:
answer = rand(void)
也可以将void省略,写成answer = rand()
,括号为空,C++将其解释为不接受任何参数的隐式声明。
函数原型
函数原型之于函数就像变量声明之于变量,就是指出涉及的类型,例如sqrt()函数的原型就为这样:
double sqrt(double);
第一个double 意味着返回double 类型的值,第二个double 意味着需要接受一个double 类型的参数。特别指出,语句中的分号不可以缺少,缺少分号,C++会将其视作函数头,加上分号证明它是一条语句,使得它作为一个原型。
使用函数时,必须定义函数原型,通常有两种方法:
1、在源文件中定义函数原型。
2、头文件中定义函数原型。
如果使用头文件中的函数可以避免自己定义函数原型,而用户自己定义的函数就需要特别定义函数原型。
用户定义的函数
用户经常需要自己定义函数,前面已经使用过好多用户自己定义的函数,它们都叫做main()函数,C++中必须有main()函数,先PO一段代码然后加以介绍:
// 此代码源于C++ Primer Plus
#include<iostream.h>
void simon(double)
int main()
{
simon(3);
cout<<"Pick an integer: ";
int count;
cin>>count;
simon(count);
cout<<"Done!"<<endl;
return 0;
}
void simon(int n)
{
cout<<"Simonn says touch your toes "<<n<<" times."<<endl;
}
代码运行结果如下:
Simonn says touch your toes 3 times.
Pick an integer: 20
Simonn says touch your toes 20 times.
Done!
函数格式
函数的格式统一为如下定义:
type functionname(argumentlist)
{
statement
}
这里提醒,C++不允许将函数定义嵌套在另一个函数定义内。每个函数定义都是独立的,所以函数的创建都是平等的。
函数头
上例中的函数头如下:
void simon(int n);
开头的void表示函数没有返回值,因此在main()函数中调用simon()不会生成可以赋值给变量的数字。
因此,此函数的调用方式如下:
simon(3);
而不能这么使用它:
answer = simon(3);
括号中的int n 表明,使用simon() 时,应提供一个int 参数。n 是一个新的变量,函数调用是值将传递给它。因此上例的函数调用将3 传递给函数头中定义的变量n。因此在cout语句中是可以使用n的。
关于main() 函数的函数头:
开头的int 表明,main() 返回一个整数值;空括号表明main()不接受参数。对于有返回值的函数,应使用关键字return 来提供返回值,并结束函数。这就是为什么要在main()函数最后使用return 0;
的原因
为什么在main()函数程序最后返回0呢?
因为main()函数的返回值并不会返回给程序的其他部分,而是返回给操作系统,通常的约定是,返回值为0 意味着程序运行成功,非零意味着存在问题。
尽量避免将关键字最为变量名的情况
下面PO一段有返回值的函数
#include<iostream.h>
int stonetolb(int);
int main()
{
int stone;
cout<<"Enter the weight in stone: ";
cin>>stone;
int pounds = stonetolb(stone);
cout<<stone<<" stones= "<<pounds<<" pounds"<<endl;
return 0;
}
int stonetolb(int sts)
{
return 14 * sts;
}
代码运行结果如下:
Enter the weight in stone: 5
5 stones = 70 pounds
在main()函数中,程序使用cin来给变量stone提供一个值,然后将这个值作为参数提供给stonetolb()函数,在该函数中,这个值被赋给变量sts。然后,函数用关键字return 将 14*sts 返回给main() 。
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。 ↩︎