C++ 基础知识(1)

文章目录

  • 写在前面
  • 1、第一个c++程序
    • 1.1、输入输出及注释
    • 1.2、命名空间
  • 2、变量、数组、指针
    • 2.1、基本类型
    • 2.2、数组与字符串
    • 2.3、指针
    • 2.4、指针空值
    • 2.5、引用
  • 3、判断与循环
    • 3.1、if、else
    • 3.2、for、while
  • 4、函数与参数
    • 4.1、函数与缺省参数
    • 4.2、函数重载
    • 4.3、内联函数

写在前面

c++基本语法、用法。
参考文章:https://blog.csdn.net/chenlong_cxy/article/details/127166206

1、第一个c++程序

1.1、输入输出及注释

// 导入iostream输入输出流
#include

// std命名空间是C++中标准库类型对象的命名空间
using namespace std;

int main(){
	int a;
	cin >> a;  
	cout<< a << endl;
}
  • 两个斜杠表示注释
  • include用来引入包含的文件,用" "双引号包含的一般是源文件相同路径下的文件,用< >包含的是stl或你所使用的第三方库等的文件
  • using namespace std 表示使用std标准空间
  • cin是输入
  • cout是输出,endl表示换行
#include
using namespace std;

int main(){
	int a, b, c;
	scanf("%d-%d-%d", &a, &b, &c);
	
	printf("Hello, World!\n");
	printf("b is %d", b);
}
  • scanf 按照固定格式,固定类型输入
  • printf 按照固定格式,固定类型输出

C++ 基础知识(1)_第1张图片

1.2、命名空间

引用命名空间N的某个成员

//使用using将命名空间中的成员引入
#include 
namespace N
{
	int a;
	double b;
}

using N::a;//将命名空间中的成员a引入
int main()
{
	a = 10;//将命名空间中的成员a赋值为10
	printf("%d\n", a);//打印命名空间中的成员a
	return 0;
}

引用命名空间N的所有成员

//使用using namespace 命名空间名称引入
#include 
namespace N
{
    // 在命名空间中,既可以定义变量,也可以定义函数
	int a;
	double b;
	int Add(int x, int y)
	{
		return x + y;
	}
}

using namespace N;//将命名空间N的所有成员引入
int main()
{
	a = 10;
	printf("%d\n", a);
	return 0;
}

2、变量、数组、指针

2.1、基本类型

整型(int、short、long、long long)
浮点型(float、double)
字符型(char)
布尔型(bool)

2.2、数组与字符串

// 数组
int myArray[5] = {1, 2, 3, 4, 5};
// 字符串
char myString[] = "Hello, world!"; // 定义一个字符数组,包含字符串"Hello, world!"
const char* myConstantString = "Hello, world!"; // 定义一个常量指针,指向字符串"Hello, world!"(需要手动管理内存,在编译时确定其长度)
std::string myStringObj = "Hello, world!"; // 定义一个字符串对象,包含字符串"Hello, world!"(自动内存管理,可动态调整长度)

2.3、指针

指针就是变量的内存地址。

#include 
using namespace std;

int main() {
    int a = 10; // 定义变量a并赋值10
    int *p = &a; // 定义一个整型指针p,并将其指向a的内存地址
    // 重点:*p = &a 相当于把*p和a绑定,*p、a其中一个内存地址变化,另一个也会跟着变

    cout << "a的值:" << a << endl; // 输出a的值
    cout << "a的内存地址:" << &a << endl; // 输出a的内存地址
    cout << "p指向的值:" << *p << endl; // 输出p指向的值(即a的值)

    int b = 20; // 定义一个整型变量b并赋值为20
    *p = b; // 将p指向的值(即a)修改为b的值
    cout << "修改后的a的值:" << a << endl; // 输出修改后的a的值(即b的值)
    return 0;
}

注意:上面的p表示单纯的地址,而*p表示指向a的地址空间
如下代码,p = &b 不会改变a的值, *p = b 会改变a的值,

#include
using namespace std;

int main(){
    int a = 10;
    int *p = &a;
    cout << "p:" << *p << endl; 

    int b = 20;
    
    p = &b; 
    cout << "a的值:" << a << endl; //  a = 10
    cout << "*p的值:" << *p << endl; // *p = 20

    return 0;
}

p = &b (地址变化)*p = b (仅数值变化) 执行后内存地址对比

C++ 基础知识(1)_第2张图片

2.4、指针空值

int* p1 = NULL;
int* p2 = 0;
int* p3 = nullptr; // p3指向空地址(c++11)

2.5、引用

#include 
using namespace std;

int main()
{
	int a = 10;
	int& b = a;//给变量a去了一个别名,叫b (引用在定义时必须初始化)
	cout << "a = " << a << endl;//a打印结果为10
	cout << "b = " << b << endl;//b打印结果也是10
	b = 20;//改变b也就是改变了a
	cout << "a = " << a << endl;//a打印结果为20
	cout << "b = " << b << endl;//b打印结果也是为20

	int c = 0;
	b = c;//这里并不会改变b的地址,只会改变b这个地址存储的值
	return 0;
}

常引用

int main()
{
	const int a = 10;
	//int& ra = a;    //该语句编译时会出错,a为常量
	const int& ra = a;//正确
	
	//int& b = 10;    //该语句编译时会出错,10为常量
	const int& b = 10;//正确
	return 0;
}

用指针写的交换函数

void swap(int *a, int *b)
 {
    int temp = *a;
    *a = *b;
    *b = temp;
}

用引用写的交换函数

void swap(int& a, int& b)
{
	int tmp = a;
	a = b;
	b = tmp;
}

3、判断与循环

3.1、if、else

#include 
using namespace std;

int main() {

    int a = 10;

    if (a > 5) {
        cout << "a大于5" << endl;
    } else if (a > 3) {
        cout << "a在3到5之间" << endl;
    } else {
        cout << "a小于等于3" << endl;
    } 
    return 0;
}

3.2、for、while

c++98 for循环

	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		cout << arr[i] << " ";
	}

c++11 for循环

	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	//循环拿到引用
	for (auto& e : arr)
	{
		cout << e << " ";
	}
	//循环自动类型
	for (auto e : arr)
	{
		cout << e << " ";
	}

while 与 do while

    int j = 0;
    while (j < 10) {
        cout << "j的值为:" << j << endl;
        j++;
    }
    int k = 0;
    do {
        cout << "k的值为:" << k << endl;
        k++;
    } while (k < 10);

循环中可以使用break和continue跳过、结束循环。

4、函数与参数

4.1、函数与缺省参数

#include 
using namespace std;
void Print(int a = 0)
{
	cout << a << endl;
}
int main()
{
	Print();//没有指定实参,使用参数的默认值(打印0)
	Print(10);//指定了实参,使用指定的实参(打印10)
	return 0;
}

缺省参数(必须从右往左依次给出,不能间隔着给)

C++ 基础知识(1)_第3张图片

缺省值必须是常量或者全局变量。

//正确示例
int x = 30;//全局变量
void Print(int a, int b = 20, int c = x)
{
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
}

4.2、函数重载

c语言中不支持函数重载,C++中支持

同名函数,形参不同

#include 
using namespace std;

int Add(int x, int y)
{
	return x + y;
}

double Add(double x, double y)
{
	return x + y;
}
int main()
{
	cout << Add(1, 2) << endl;//打印1+2的结果
	cout << Add(1.1, 2.2) << endl;//打印1.1+2.2的结果
	return 0;
}

4.3、内联函数

inline int add(int a, int b) {
    return a + b;
}


int main() {
    int x = 3;
    int y = 4;
    int sum = add(x, y);
    std::cout << "The sum is: " << sum << std::endl;
    return 0;
}

在这个例子中,add函数被定义为内联函数,因此在main函数中调用它时,它的代码会被直接插入到main函数中,而不是像普通函数那样通过函数调用。

你可能感兴趣的:(C系列,c++,开发语言)