C++––初识C++

目录

一.绪言

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;
  • 24
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值