c++学习摘录

#include <stdlib.h>
#include

using namespace std;

int main()
{
cout<<"Hello World "<<endl;
system(“pause”);
return 0;
}
包含头文件 stdlib.h,并在主程序中加入 system(“pause”); 可以在程序运行完以后使黑框暂停显示,等待输入,而不是闪退。

typedef 声明

您可以使用 typedef 为一个已有的类型取一个新的名字。下面是使用 typedef 定义一个新类型的语法:
typedef type newname;
例如,下面的语句会告诉编译器,feet 是 int 的另一个名称:
typedef int feet;
现在,下面的声明是完全合法的,它创建了一个整型变量 distance:
feet distance;

枚举类型

枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。
创建枚举,需要使用关键字 enum。枚举类型的一般形式为:
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],

标识符[=整型常数]
} 枚举变量;

如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。
例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 “blue”。
enum color { red, green, blue } c;
c = blue;

extern 关键字声明在变量和函数之前的说明。

1、作用在变量之前
变量只允许定义一次,但可以在多个文件中声明。
Test.cpp 中:
int s32Val = 0; // 定义一个变量 s32Val,并赋初值为 0
Test1.cpp 中:
extern int s32Val; // 声明变量 s32Val,它在 Test.cpp 中被定义,此处不可赋值
Test2.cpp 中:
extern int s32Val; // 声明变量 s32Val,它在 Test.cpp 中被定义,此处不可赋值
2、作用在函数之前
Test.h:
extern void Fun(); // 函数声明,extern 用于标识次函数为外部可调用函数
Test.cpp:
void Fun(); // 函数定义
#define 预处理器
下面是使用 #define 预处理器定义常量的形式:
#define identifier value
const 关键字
您可以使用 const 前缀声明指定类型的常量,如下所示:
const type variable = value;
有符号:用最高为来表示符号位 , 1表示负,0表示正无符号:全部用来表示实际数。两者的取值范围不同有符号整型为 -32768 到 32767 无符号整型 为 0 到 65535
extern 存储类

当您有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。可以这么理解,extern 是用来在另一个文件中声明一个全局变量或函数。

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101


A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

下表显示了 C++ 支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:

运算符 描述 实例
& 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 (A & B) 将得到 12,即为 0000 1100
| 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 (A | B) 将得到 61,即为 0011 1101
^ 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 (A ^ B) 将得到 49,即为 0011 0001
~ 二进制补码运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0。 (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。
<< 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 A << 2 将得到 240,即为 1111 0000

二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 A >> 2 将得到 15,即为 0000 1111

wchar_t 是C/C++的字符类型,一种扩展的存储方式,主要用在国际化程序的实现中。

char是8位字符类型,最多能包含256种字符,许多的外文字符集所包含的字符数目超过256个,char型不能表示。

比如对于汉字,韩文以及日文这样的字符,它们的每一个文字都占据两个字节,所以C++提出了wchar_t类型,也称为双字节类型,或宽字符类型。

#include
#include //setlocale函数在locale头文件中定义
using namespace std;
int main()
{
//使用setlocale函数将本机的语言设置为中文简体
//LC_ALL表示设置所有的选项(包括金融货币、小数点,时间日期格式、语言字符串的使用习惯等),chs表示中文简体
setlocale(LC_ALL, “chs”);
wchar_t wt[] = L"中国伟大复兴梦"; //大写字母L告诉编译器为"中"字分配两个字节的空间
wcout << wt << endl; //使用wcout来代替cout输出宽字符
return 0;
}

*C++ 提供了两种指针运算符,一种是取地址运算符 &,一种是间接寻址运算符

指针是一个包含了另一个变量地址的变量,您可以把一个包含了另一个变量地址的变量说成是"指向"另一个变量。变量可以是任意的数据类型,包括对象、结构或者指针。
取地址运算符 &
& 是一元运算符,返回操作数的内存地址。例如,如果 var 是一个整型变量,则 &var 是它的地址。该运算符与其他一元运算符具有相同的优先级,在运算时它是从右向左顺序进行的。
您可以把 & 运算符读作"取地址运算符",这意味着,&var 读作"var 的地址"。
间接寻址运算符 *
第二个运算符是间接寻址运算符 ,它是 & 运算符的补充。 是一元运算符,返回操作数所指定地址的变量的值。
请看下面的实例,理解这两种运算符的用法
调用时变量前加 “&” -------返回该变量的地址
声明时变量前加 “基本类型 " -------该指针变量表示另一个普通变量的地址 eg:int * 或 char *
调用时变量前加 "
”-------表示取该地址的内容
声明时变量前加 “基本类型 **”-------该二级指针变量表示另一个一级"基本类型 *"指针变量地址

函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。
定义函数
C++ 中的函数定义的一般形式如下:

return_type function_name( parameter list )
{
body of the function
}
在 C++ 中,函数由一个函数头和一个函数主体组成。
下面列出一个函数的所有组成部分:

返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
函数主体:函数主体包含一组定义函数执行任务的语句。
函数声明
函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。

函数声明包括以下几个部分:

return_type function_name( parameter list );
针对上面定义的函数 max(),以下是函数声明:

int max(int num1, int num2);
在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明:

int max(int, int);
当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在这种情况下,您应该在调用函数的文件顶部声明函数。

函数参数
如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。
当调用函数时,有三种向函数传递参数的方式:

C++ 传值调用
C++ 函数 C++ 函数

向函数传递参数的传值调用方法,把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。

默认情况下,C++ 使用传值调用方法来传递参数。一般来说,这意味着函数内的代码不会改变用于调用函数的实际参数。函数 swap() 定义如下:

// 函数定义
void swap(int x, int y)
{
int temp;

temp = x; /* 保存 x 的值 /
x = y; /
把 y 赋值给 x /
y = temp; /
把 x 赋值给 y */

return;
}
现在,让我们通过传递实际参数来调用函数 swap():

实例
#include
using namespace std;

// 函数声明
void swap(int x, int y);

int main ()
{
// 局部变量声明
int a = 100;
int b = 200;

cout << “交换前,a 的值:” << a << endl;
cout << “交换前,b 的值:” << b << endl;

// 调用函数来交换值
swap(a, b);

cout << “交换后,a 的值:” << a << endl;
cout << “交换后,b 的值:” << b << endl;

return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:

交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 100
交换后,b 的值: 200

C++ 指针调用
C++ 函数 C++ 函数

向函数传递参数的指针调用方法,把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

按指针传递值,参数指针被传递给函数,就像传递其他值给函数一样。因此相应地,在下面的函数 swap() 中,您需要声明函数参数为指针类型,该函数用于交换参数所指向的两个整数变量的值。

// 函数定义
void swap(int *x, int *y)
{
int temp;
temp = x; / 保存地址 x 的值 */
*x = y; / 把 y 赋值给 x */
y = temp; / 把 x 赋值给 y */

return;
}
如需了解 C++ 中指针的更多细节,请访问 C++ 指针 章节。

现在,让我们通过指针传值来调用函数 swap():

#include
using namespace std;

// 函数声明
void swap(int *x, int *y);

int main ()
{
// 局部变量声明
int a = 100;
int b = 200;

cout << “交换前,a 的值:” << a << endl;
cout << “交换前,b 的值:” << b << endl;

/* 调用函数来交换值
* &a 表示指向 a 的指针,即变量 a 的地址
* &b 表示指向 b 的指针,即变量 b 的地址
*/
swap(&a, &b);

cout << “交换后,a 的值:” << a << endl;
cout << “交换后,b 的值:” << b << endl;

return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:

交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 200
交换后,b 的值: 100

**
**
C++ 函数
向函数传递参数的引用调用方法,把引用的地址复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
按引用传递值,参数引用被传递给函数,就像传递其他值给函数一样。因此相应地,在下面的函数 swap() 中,您需要声明函数参数为引用类型,该函数用于交换参数所指向的两个整数变量的值。
// 函数定义
void swap(int &x, int &y)
{
int temp;
temp = x; /* 保存地址 x 的值 /
x = y; /
把 y 赋值给 x /
y = temp; /
把 x 赋值给 y */

return;
}
现在,让我们通过引用传值来调用函数 swap():
实例
#include using namespace std; // 函数声明 void swap(int &x, int &y); int main () { // 局部变量声明 int a = 100; int b = 200; cout << “交换前,a 的值:” << a << endl; cout << “交换前,b 的值:” << b << endl; /* 调用函数来交换值 */ swap(a, b); cout << “交换后,a 的值:” << a << endl; cout << “交换后,b 的值:” << b << endl; return 0; }
当上面的代码被编译和执行时,它会产生下列结果:
交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 200
交换后,b 的值: 100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值