c++基础入门1

tech2025-08-18  5

基础: sizeof(数据类型/变量) 输出默认六位有效数字,要显示更多,要配置 short 2 int 4 long 4/8 longlong 8 short 4 double 8 3e2 = 3*10^2 3e-2 = 3*10^-2 float f1 = 3.14f; double d1 = 3.14; char 1个字节,将对应的ascii编码放在存储单元 查看字符对应ascii码: int(ch) a -- 97 A -- 65 字符串: c风格字符串:char str1[] = "helloworld"; c++风格字符串:string str2 = "helloworld";(要包含string库) bool值: cout 后为0/1 1个字节大小 数据的输入: 记得初始化 输入bool值,非0值都代表真 除法运算符: intdouble 不同 两个小数不能进行取模运算 三目运算符可以用来赋值,也可以用来被赋值 switchcaseint score = 0; cin >> score; switch (score) { case 10 : cout << " "break; case 9 : cout << "" default: cout <<" " } switch缺点:判断只能是整型,或者字符型,不可以是一个区间,记得写break,不然程序会一直执行 猜数字: 添加随机数种子: #include <ctime> (才能使用time) srand((unsigned int) time(NULL)) 随机生成数字:int num =rand()%100+1; 水仙花数:(三位数) a =num%10;个位 b=num/10%10;十位 c =num/100;百位 数组: int a[5];再赋值 int b[5] = {1 ,2 ,3 ,4 ,5}; int c[] = {1 ,2,3,4,5,6,7}; 一维数组: sizeof(arr) 整个数组占用内存 sizeof(arr[0]) 每个元素占用内存 数组中元素的个数 上面两个相除 cout << arr;数组16进制地址 cout << (int)arr;10进制地址 第二个元素的地址 &arr[1] 重点:数组名是常量,不可以用来赋值 五只小猪称体重: 先认定一个最大值0; 遍历数组; 元素逆置: 双指针/双下标 if start>=end 退出循环 或者 start>end 进行循环 while(start > end) { int temp = a; a = b; b =temp; start++; end--; } 冒泡排序: 对每一对相邻,执行操作,获得第一个最大 每次比较次数减一 i:0到n-1(不包含n-1int i =0;i<n-1;i++ j:0到n-1-i(不包含n-1-i)int j=0;j<n-1-i;j++ 为什么不包含最后一个数呢,明明也要遍历到! 因为我们比较的是arr[j]和arr[j+1] 二维数组的定义: int arr[2][3]; arr[0][0] = ...;先定义后赋值 int arr[2][3]= { {1,2,3}, {4,5,6} }; int arr[2][3] ={1 ,2, 3, 4, 5, 6}; int arr[][3]={1,2,3,4,5,6} sizeof(arr)整个数组所占内存空间 sizeof(arr[0])二维数组第一行所占用内存空间 sizeof(arr[0][0])二维数组第一个元素所占用内存空间 二维数组行数:sizeof(arr)/sizeof(arr[0]) 二维数组列数:sizeof(arr[0])/sizeof(arr[0][0]) 第二行首地址:arr[1] 指针所占内存空间: sizof(int *32位操作系统 4个字节 64位操作系统 8个字节 空指针: 用于给指针变量初始化 空指针不可以进行访问,若访问,则报错; nullptr 也是 0 0255时系统所占用的,因此不可以访问。 野指针: 指向非法空间 int *p = (int *)0x1100; cout << *p << endl;会报错,没有权限 const修饰指针: 1. const int *p =&a; 常量指针 指针指向的值不可以改 指针可以改 2. int * const p =&a; const后面跟着变量,所以是常量 指针常量 指针指向的值可以改 指针不可以改 3. const int * const p = &a; 都不可以改 指针和函数 void swap(int a,int b)若按值传递,不会改变a和b的值,只会改变函数内临时变量的值 void swap(int *a,int *b)可以改变a和b的值 对数组进行冒泡排序: 需要传入数组首地址,以及数组长度 结构体: 创建结构体变量时,struct关键字可以省略 Student s1; s1.name = ...; Student s1 = {"李四",20,80}; 结构体数组: = { { }{ }{ } } 结构体指针: Student * p =&s; p -> name; 嵌套结构体: Teacher T; T.stu.name = "小王"; 结构体作为参数: 按值传递:形参改变不会改变实参 按指针传递:有隐患,有权限改变实参,加上const,即传入参数时,const student s,防止误操作
最新回复(0)