目录
一.绪言
1.什么是C++
2.C语言和C++的关系
2.1数据类型
2.2数据类型的长度
2.3变量和常量
2.4字符串操作
2.5判断和选择语句,循环语句
2.6逻辑运算符
2.7函数的声明和调用
2.8数组
2.9操作符
二.C++入门的基本知识
1.命名空间
2.输入&输出
3.缺省参数
4.函数重载
5.名字修饰
6.引用
7.内联函数
8.auto关键字
9.for
10.指针
一.绪言
1.什么是C++
在前面的学习中,我们在接触c语言的时候,我们先学习的最简单的语句
#include<stdio.h>
int main()
{
printf("hello world\n");
}
那么,在c++的学习中,我们也从最简单的语句开始学习
#include<iostream>
int main()
{
std::cout << "Hello world" << std::endl;
return 0;
}
让我们逐行解释
1.#include<iostream> --预处理指令,它告诉编译器引入iostream库,这个库包含了输入和输出的功能
2.int main() --C++程序的人口
main函数是每个C++程序必有的函数,程序从这里开始执行
3.{} --代码块的开始和结束
4.std::cout --输出流对象,用于将文本输出到控制台
5.<< --输出运算符,用于将文本或其他数据插入到输出流中
6.Hello world --输出的文本
7. std::endl --一个特殊的控制字符,表示换行并刷新输出流
8. return 0; --main函数的结束语句,0是程序的返回值
2.C语言和C++的关系
C++是C语言的扩展和增强版本
C++兼容C
当然,c语言的知识在c++也同样适用
2.1数据类型
int short long long long float double char bool
声明和初始化变量:<数据类型> <变量名> = <初始值>;
int age = 20;
char name = "qwl";
bool isPassed = true;
2.2数据类型的长度
2.3变量和常量
变量:变量名,变量类型,变量值
常量:就是在程序中固定不变的值
2.4字符串操作
strlen(str):返回字符串的长度(不包括\0)
strcpy(dest, src):将源字符串拷贝到目标字符串
strcat(dest, src):将源字符串连接到目标字符串的末尾
strcmp(str1, str2):比较两个字符串的大小关系
substr(pos, len):返回从指定位置开始的指定长度的子字符串
字符串相关的函数-CSDN博客
2.5判断和选择语句,循环语句
if语句
if else语句
switch语句
for语句
while语句
do while语句
循环结构知识总结-CSDN博客
选择结构知识总结(入门)-CSDN博客
2.6逻辑运算符
&& || !
操作符知识-CSDN博客
2.7函数的声明和调用
函数(基本知识总结)-CSDN博客
2.8数组
数组的知识总结-CSDN博客
2.9操作符
操作符知识-CSDN博客
二.C++入门的基本知识
1.命名空间
namespace
在c语言中,如果是在全局中的变量,没有在main函数中,那么c语言不能解决这类问题,就需要c++处理
1.1命名空间定义
一般格式:
namespace 命名空间的名字
{
内容
}
1.1.1一般用法
namespace qwl
{
int rand = 10;
}
1.1.2嵌套使用
namespace qwl
{
int rand = 10;
namespace qwl2
{
int r = 2;
}
}
1.1.3同一命名空间名称
namespace q
{
int rand = 10;
}
namespace q
{
int r = 1;
}
1.2命名空间的使用
1.2.1命名空间名称及作用域限定符
int main()
{
printf("%d\n", N::a);
return 0;
}
1.2.2使用using引入某个成员
using N::b;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
return 0;
}
1.2.3使用using namespace 命名空间名称 引入
using namespace N;
int main()
{
printf("%d\n", N::a);
printf("%d\n", b);
ADD(10, 20);
return 0;
}
2.输入&输出
cout输出
cin输入
endl换行输出
3.缺省参数
声明或定义函数时为函数的参数指定一个缺省值,如果没有指定实参就用形参的缺省值
void Func(int a = 0)
{
cout << a << endl;
}
int main()
{
Func();//没有传参就使用默认值
Func(10);//使用指定的实参
return 0;
3.1全缺省参数
void Func(int a = 10, int b = 20, int c = 30)
//{
// cout << "a = " << a << endl;
// cout << "b = " << b << endl;
// cout << "c = " << c << endl;
//}
3.2半缺省参数
void Func(int a, int b = 20, int c = 30)
//{
// cout << "a = " << a << endl;
// cout << "b = " << b << endl;
// cout << "c = " << c << endl;
//};
1.半缺省参数必须从右往左依次给出,不能间隔着给
2.缺省参数不能在函数定义和声明中同时出现
3.缺省值必须是常量或者全局变量
4.c语言不支持
4.函数重载
c++允许在同一个作用域内声明几个同名函数,这些同名函数的形参列表不同
4.1参数类型不同
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}
int main()
{
Add(10, 20);
Add(10.1, 20.1);
return 0;
}
4.2参数个数不同
void f()
{
cout << "f()" << endl;
}
void f(int a)
{
cout << "f(int a)" << endl;
}
int main()
{
f();
f(10);
return 0;
}
4.3参数类型顺序不同
void f(int a, char b)
{
cout << "f(int a, char b)" << endl;
}
void f(char b, int a)
{
cout << "f(char b, int a)" << endl;
}
int main()
{
f(10, 'b');
f('b', 10);
return 0;
}
5.名字修饰
c语言不支持重载,因为同名函数不能区分(返回值不同不能构成重载,调用不能区分调用哪个)
c++可以,因为它通过函数修饰区分,只要参数不同,修饰出来的名字就不一样
6.引用
给已存在变量取一个别名
没有引用之前,取地址再解引用
//c语言二级指针
typedef struct ListNode
{
int val;
struct ListNode* next;
}ListNode;
void PushBack(ListNode** pphead, int x)
{
ListNode* newnode;
if (*pphead == NULL)
{
*pphead = newnode;
}
else
{
}
}
int main()
{
ListNode* plist = NULL;
PushBack(*plist, 1);
PushBack(*plist, 2);
PushBack(*plist, 3);
return 0;
}
//cpp引用
typedef struct ListNode
{
int val;
struct ListNode*& next;
}ListNode;
void PushBack(ListNode& phead, int x)
{
ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));
if (phead == NULL)
{
phead = newnode;
}
else
{
}
}
int main()
{
ListNode* plist = NULL;
PushBack(plist, 1);
PushBack(plist, 2);
PushBack(plist, 3);
return 0;
}
输出型参数
6.1引用特性
1.引用在定义时必须初始化
2.一个变量可以有多个引用
作为别名不能修改
6.2常引用
在引用的过程中,权限可以平移,可以缩小,不可以放大
const int a = 10;
//权限放大
int& ra = a;
int b = a;//可以 因为这里是赋值拷贝,b修改不影响a
//权限平移
const int& c = a;
//权限缩小
int x = 0;
const int& y = x;