当前位置: 首页 > article >正文

c++初始

目录

一数据类型

1.

2.sizeof

3.布尔

4.字符串类型

二.数据输入与输出

1.输出

 2.输入

三.运算

1.加减乘除取模,++,--都一样

2.逻辑非与或,与C语言一样

3.比较运算符,与C语言一样

4.三目运算符(与C语言一样)

四.条件,循环语句与C语言一样

五.一维数组

1.特点

2.定义

3.冒泡排序

六.二维数组

1.定义

2.地址

七.函数

1.基础函数跟C语言一样

2.函数的分文件编写:

八.指针

1.基础(与C语言一样)

2.指针所占内存空间

3.空指针/野指针

4.const(也可以详见C语言书)


一数据类型

1.

| **数据类型**        | **占用空间**                                    | 取值范围         |

| short(短整型)       | 2字节                                           | (-2^15 ~ 2^15-1) |

| int(整型)           | 4字节                                           | (-2^31 ~ 2^31-1) |

| long(长整形)        | Windows为4字节,Linux为4字节(32位),8字节(64位) | (-2^31 ~ 2^31-1) |

| long long(长长整形) | 8字节                                           | (-2^63 ~ 2^63-1) |

| float        | 4字节        | 7位有效数字      |

| double       | 8字节        | 15~16位有效数字 |

|char           | 1字节 |

C和C++中字符型变量只占用1个字节

2.sizeof

统计数据类型所占内存大小

sizeof(数据类型);

3.布尔

bool a  = true  --- 真(本质是1)

bool a = false --- 假(本质是0)

#include<iostream>
using namespace std;
int main() {

	bool flag = true;
	cout << flag << endl; // 1

	flag = false;
	cout << flag << endl; // 0

	cout << "size of bool = " << sizeof(bool) << endl; //1
	
	system("pause");

	return 0;
}

PS:输入的时候,所有非零值都代表的是真

例如:

#include<iostream>
using namespace std;
int main()
{
    bool a =199;
    cout << "a是真吗,a = " << a << endl;//a是真吗,a = 1
    
    return 0;
}

4.字符串类型

(1)C语言风格

        char 变量名[] = "......";

(2)c++风格

        #include<string>;

        string s = "........";

#include<iostream>
#include<string>
using namespace std;
int main()
{
    char s1[] =  "hhhh";
    string s2 = "阿萨德";
    cout<< s1 << s2<<endl;
    return 0;
}

二.数据输入与输出

1.输出

cout<< "(要输出的语句)"<< (变量)<< ......  <<endl;

        PS:endl是换行符

#include<iostream>
using namespace std;
int main()
{
    bool a =true;
    cout << "a是真吗,a = " << a <<"哎嘿嘿"<< endl;
    
    return 0;
}

 2.输入

cin >> 变量

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str;
	cout << "请输入字符串型变量:" << endl;
	cin >> str;
	cout << str << endl;
}

三.运算

1.加减乘除取模,++,--都一样

        PS:浮点型不能取模运算

2.逻辑非与或,与C语言一样

3.比较运算符,与C语言一样

唯一需要注意的是,使用时要加括号,否则会报错(无法确定需要哪个 函数模板 "std::endl" 实例)

        cout << a == b << endl;

#include<iostream>
using namespace std;
int main()
{
    int a =10;
    int b = 20;
    cout << (a==b) << endl;
    return 0;
}

4.三目运算符(与C语言一样)

expression1 ? expression2:expression3;

如果表达式1的值为真,执行表达式2,否则执行表达式3。

四.条件,循环语句与C语言一样

五.一维数组

1.特点

特点1:数组中的每个数据元素都是相同的数据类型

特点2:数组是由连续的内存位置组成的

特点3: 可以统计整个数组在内存中的长度

特点4: 可以获取数组在内存中的首地址

#include<iostream>
using namespace std;
int main() {

	//数组名用途
	//1、可以获取整个数组占用内存空间大小
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

	cout << "整个数组所占内存空间为: " << sizeof(arr) << endl;
	cout << "每个元素所占内存空间为: " << sizeof(arr[0]) << endl;
	cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;

	//2、可以通过数组名获取到数组首地址
	cout << "数组首地址为: " << arr << endl;
	cout << "数组中第一个元素地址为: " << &arr[0] << endl;
	cout << "数组中第二个元素地址为: " << &arr[1] << endl;

	//arr = 100; 错误,数组名是常量,因此不可以赋值

	return 0;
}

2.定义

(1)数据类型  数组名[ 数组长度 ]; 

(2)数据类型  数组名[ 数组长度 ] = { 值1,值2 ...};`

(3)数据类型  数组名[ ] = { 值1,值2 ...};

3.冒泡排序

#include<iostream>
using namespace std;
int main() {

	int arr[9] = { 4,2,8,0,5,7,1,3,9 };

	for (int i = 0; i < 9 - 1; i++)
	{
		for (int j = 0; j < 9 - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}

	for (int i = 0; i < 9; i++)
	{
		cout << arr[i] << " ";
	}

	return 0;
}

六.二维数组

1.定义

(1.) ` 数据类型  数组名[ 行数 ][ 列数 ]; `

(2). `数据类型  数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };`

(3.) `数据类型  数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4};`

(4). ` 数据类型  数组名[  ][ 列数 ] = { 数据1,数据2,数据3,数据4};`

        PS:在定义二维数组时,如果初始化了数据,可以省略行数

2.地址

        与C语言一样

        二维数组的变量名 = 二维数组地址 =首元地址 = 第一行地址

#include<iostream>
using namespace std;
int main() {

	//二维数组数组名
	int arr[2][3] =
	{
		{1,2,3},
		{4,5,6}
	};

	cout << "二维数组大小: " << sizeof(arr) << endl;//24,整个二维数组大小
	cout << "二维数组一行大小: " << sizeof(arr[0]) << endl;//12
	cout << "二维数组元素大小: " << sizeof(arr[0][0]) << endl;//4

	cout << "二维数组行数: " << sizeof(arr) / sizeof(arr[0]) << endl;//2
	cout << "二维数组列数: " << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;//3

	//地址
	cout << "二维数组首地址:" << arr << endl;//0x61fe00
	cout << "二维数组第一行地址:" << arr[0] << endl;//0x61fe00
	cout << "二维数组第二行地址:" << arr[1] << endl;

	cout << "二维数组第一个元素地址:" << &arr[0][0] << endl;//0x61fe00
	cout << "二维数组第二个元素地址:" << &arr[0][1] << endl;

	return 0;
}

七.函数

1.基础函数跟C语言一样

2.函数的分文件编写:

        1. 创建后缀名为.h的头文件  

        2. 在头文件中写函数的声明

//swap.h文件
#include<iostream>
using namespace std;

//实现两个数字交换的函数声明
void swap(int a, int b);

        3. 创建后缀名为.cpp的源文件

        4. 在源文件中写函数的定义(注意加上库函数xxx.h)

//swap.cpp文件
#include "swap.h"
#include<iostream>
using namespace std;
void swap(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}
int main() 
{
	int a = 100;
	int b = 200;
	swap(a, b);
	return 0;
}

八.指针

1.基础(与C语言一样)

牢记:&地址符

            *解引符

#include<iostream>
using namespace std;
int main()
{
    int a =10;
    int * p = &a;
    cout << p<<endl;//0x61fe14
    cout << &a;//0x61fe14
    return 0;
}

2.指针所占内存空间

#include<iostream>
using namespace std;
int main()
{
    int a =10;
    int * p = &a;
    cout << sizeof(p)<<endl;//8
    return 0;
}

总结:所有指针类型在64位操作系统下是8个字节

        所有指针类型在32位操作系统下是4个字节

3.空指针/野指针

#include<iostream>
using namespace std;
int main() {

	//指针变量p指向内存地址编号为0的空间
	int * p = NULL;

	cout << p << endl;//0
    //访问空指针报错 
	//内存编号0 ~255为系统占用内存,不允许用户访问
     cout << *p << endl;
   
	return 0;
}

    //访问空指针报错

    //内存编号0 ~255为系统占用内存,不允许用户访问

(2)野指针:指针变量指向非法的内存空间

4.const(也可以详见C语言书)

#include<iostream>
using namespace std;
int main() {

	int a = 10;
	int b = 10;

	//const修饰的是指针,指针指向可以改,指针指向的值不可以更改
	const int * p1 = &a; 
	p1 = &b; //正确
	//*p1 = 100;  报错
	

	//const修饰的是常量,指针指向不可以改,指针指向的值可以更改
	int * const p2 = &a;
	//p2 = &b; //错误
	*p2 = 100; //正确

    //const既修饰指针又修饰常量
	const int * const p3 = &a;
	//p3 = &b; //错误
	//*p3 = 100; //错误


	return 0;
}

总结:const修饰常量,就是指针常量,不可以改指针方向,可以改值。      

            int * const p2 = &a;

            //p2 = &b; //错误

            *p2 = 100; //正确

       const修饰指针,就是常量指针,不可以改值,可以改指针方向。

                    const int * p1 = &a;

                    p1 = &b; //正确

                    //*p1 = 100;  报错

硬记:const  p,不可以改变指针方向, int * const p2 = &a;

           const int*,可以改变指针方向,  const int * p1 = &a;


http://www.kler.cn/a/539798.html

相关文章:

  • Django操作指令大集合说明
  • Linux(21)——系统日志
  • 【DeepSeek × Postman】请求回复
  • Git(分布式版本控制系统)系统学习笔记【并利用腾讯云的CODING和Windows上的Git工具来实操】
  • 如何避免大语言模型中涉及丢番图方程的问题
  • 编译spring 6.2.2
  • Ext系列文件系统(上)
  • C++ Primer 逗号运算符
  • Linux中getifaddrs函数
  • 【人工智能】解码语言之谜:使用Python构建神经机器翻译系统
  • 51单片机之冯·诺依曼结构
  • 爬虫学习笔记之requests库的使用
  • 数据可视化技术综述(4)衡量数据的性能指标的十大维度
  • [Deepseek+Heygen+剪映]快速生产数字人讲解的视频内容
  • 【机器学习】scikit-learn调用KNN算法并手动模仿封装自己的KNN算法
  • 深入解析 FFmpeg 的 AAC 编解码过程
  • Python 鼠标轨迹 - 防止游戏检测
  • NPM 的扁平化目录与幻影依赖问题,以及 PNPM 如何通过硬链接和软链接解决
  • Ranger Admin安装MySQL初始化问题解决
  • Git 基础命令详解:从零开始掌握版本控制
  • idea项目列表不出现,展示loading
  • webpack配置项之---output.asyncChunks
  • 探索Scikit-learn:Python中的机器学习宝库
  • 学习script setup 语法糖
  • 哈佛大学“零点项目”(Project Zero)简介
  • idea 如何使用deepseek 保姆级教程