C++笔记
基本语法
对象:
对象具有状态和行为。例如:一只狗的状态-颜色、名称、品种,行为-摇动、叫唤、吃。对象是类的实例。
类:
类可以定义为描述对象行为/状态的模板/蓝图。
方法:
从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。
即时变量 :
每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。
例子:输出HelloWorld!
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
system("pause");
return 0;
}
修饰符类型
signed
unsigned
long
short
实例:
#include <iostream>
using namespace std;
int mian()
{
short int i;
short unsigned int j;
j = 50000;
i = j;
cout << i << " " << j << endl;
system("pause");
return 0;
}
存储类
auto
声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。
实例化:
auto f = 3.14; //double
auto s("Hello"); //const char*
auto z = new auto(9); //int*
auto x1 = 5, x2 = 5.0, x3 = 'r'; //错误,初始化必须为同一类型
register
register存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 ‘&’ 运算符(因为它没有内存位置)。
实例化:
{
register int miles;
}
static
static存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。
static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
在 C++ 中,当 static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享。
实例化:
#include <iostream>
using namespace std;
void func(void);
static int count = 10;
int main()
{
while(count--)
{
func();
}
system("pause");
return 0;
}
void func(void)
{
static int i = 5;
i++;
std::cout << "变量i为" << i;
std::cout << ",变量count为" << count << std::endl;
}
extern
extern存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。当您使用 ‘extern’ 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。
当您有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。可以这么理解,extern 是用来在另一个文件中声明一个全局变量或函数。
extern 修饰符通常用于当有两个或多个文件共享相同的全局变量或函数的时候,如下所示:
第一个文件:main.cpp
#include <iostream>
int count;
extern void write_extern();
int main()
{
count = 5;
write_extern();
}
第二个文件:support.cpp
#include <iostream>
extern int count;
void write_extern(void)
{
std::cout << "Count is" << count << std::endl;
}
函数
函数是一组一起执行一个任务的语句。每个c++程序至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数。
定义函数
一般形式为:
return_ytpe function_name(oarameter list)
{
body of the function
}
返回类型
一个函数可以返回一个值。return_type是函数返回值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type的关键字是void。
函数名称
这是函数的实际名称。函数名和参数列表一起构成了函数签名。
参数
参数就像是站位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可以不包含参数。
实例:比较大小的函数
int max(int num1, int num2)
{
if (num1 > num2)
{
return num1;
} else
{
return num2;
}
}
调用函数
创建 C++ 函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务。
当程序调用函数时,程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序。
调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。例如:
#include <iostream>
using namespace std;
int max(int num1, int num2);
int main()
{
int a = 100;
int b = 200;
int ret;
ret = max(a, b);
cout << "Max value is : " << ret << endl;
system("pause");
return 0;
}
int max(int num1, int num2)
{
if (num1 > num2)
{
return num1;
} else
{
return num2;
}
}
参数的默认值
当您定义一个函数,您可以为参数列表中后边的每一个参数指定默认值。当调用函数时,如果实际参数的值留空,则使用这个默认值。
这是通过在函数定义中使用赋值运算符来为参数赋值的。调用函数时,如果未传递参数的值,则会使用默认值,如果指定了值,则会忽略默认值,使用传递的值。请看下面的实例:
#include <iostream>
using namespace std;
int sum(int a, int b = 20)
{
return a + b;
}
int main()
{
int a = 100;
int b = 200;
int result;
result = sum(a, b);
cout << "Total value is " << result << endl;
result = sum(a);
cout << "Total value is " << result << endl;
system("pause");
return 0;
}
数组
初始化数组
double blance[] = {12, 2.1, 32, 1000}
访问数组元素
数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。例如:
double salary = balance[9];
上面的语句将把数组中第 10 个元素的值赋给 salary 变量。下面的实例使用了上述的三个概念,即,声明数组、数组赋值、访问数组:
实例:
#inclued <iostream>
using namespace std;
#include <iomanip>
using std::setw;
int main()
{
int n[10];
for (int i = 0; i < 10; i++)
{
n[i] = i + 100;
}
cout << "Element" << setw(13) << "value" << endl;
for (int j = 0; j < 10; j++)
{
cout << setw(7) << j << setw(13) << n[j] << endl;
}
system("pause");
return 0;
}
指针
学习 C++ 的指针既简单又有趣。通过指针,可以简化一些 C++ 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C++ 程序员,学习指针是很有必要的。
正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:
#include <iostream>
using namespace std;
int main()
{
int var1;
char var2[10];
cout << "var1变量的地址:";
cout << &var1 << endl;
cout << "var2变量的地址:";
cout << &var2 << endl;
system("pause");
return 0;
}
怎么使用指针
使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。这些是通过使用一元运算符 ***** 来返回位于操作数所指定地址的变量的值。下面的实例涉及到了这些操作:
#include <iostream>
using namespace std;
int mian()
{
int var = 20;
int *ip;
ip = &var;
cout << "Value of var variablr: " << var << endl;
cout << "Address stored in ip variable: " << ip << endl;
cout << "Value is *ip variable: " << *ip << endl;
system("pause");
return 0;
}
C++ 指针详解
在 C++ 中