传智播客C++视频学习笔记(1)
下载Visual Studio Community版本,
#include<iostream> using namespace std; int main() { cout << "Hello World" << endl; system("pause"); return 0; }
单行注释,多行注释,
main( )函数是一个程序的入口,每个程序都必须有这么一个函数,有且仅有一个,
变量给一段指定的内存空间起名,方便操作这段内存,
#include<iostream> using namespace std; int main() { int a = 10; cout << "a = " << a << endl; system("pause"); return 0; }
常量用于记录程序中不可更改的数据,
#include<iostream> using namespace std; //宏常量 #define Day 7 int main() { //Day = 8; cout << "一周有" << Day << "天" << endl; //const修饰的变量 const int month = 12; //month = 13; cout << "一年有" << month << "个月" << endl; system("pause"); return 0; }
关键字是C++中预先保留的单词,也叫标识符,不要用关键字给变量或常量起名称,
标识符命名规则:标识符不能是关键字,标识符只能由字母、数字、下划线组成,第一个字符必须为字母或下划线,标识符中字母区分大小写,见名知意,
C++规定在创建一个变量或常量时。必须要指定出相应的数据类型,否则无法给变量或常量分配内存,
#include<iostream> using namespace std; int main() { //短整型,2字节 short num1 = 10; //整型,4字节 //四者取值范围也不同哦~ int num2 = 10; //长整形,4字节 long num3 = 10; //长长整型,8字节 long long num4 = 10; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; cout << "num3 = " << num3 << endl; cout << "num4 = " << num4 << endl; system("pause"); return 0; }
利用sizeof关键字可以统计数据类型所占内存大小,
#include<iostream> using namespace std; int main() { short num1 = 10; cout << "short占用内存空间为" << sizeof(num1) << endl; int num2 = 10; cout << "int占用内存空间为" << sizeof(num2) << endl; long num3 = 10; cout << "long占用内存空间为" << sizeof(num3) << endl; long long num4 = 10; cout << "long long占用内存空间为" << sizeof(num4) << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //单精度float,4字节 float f1 = 3.1415926f; cout << "f1 = " << f1 << endl; //双精度double,8字节 double d1 = 3.1415926; cout << "d1 = " << d1 << endl; //科学计数法 float f2 = 3e2; //3*10^2 cout << "f2 = " << f2 << endl; float f3 = 3e-2; //3*0.1^2 cout << "f3 = " << f3 << endl; system("pause"); return 0; }
字符型变量用于显示单个字符,
#include<iostream> using namespace std; int main() { //C++中字符型变量只占用1个字节 //字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放到存储单元 //字符型变量创建方式 char ch = 'a'; cout << "ch = " << ch << endl; //字符型变量所占内存大小 cout << "字符型变量所占内存大小:" << sizeof(ch) << endl; //在显示字符型变量时,用单引号将字符括起来,不要用双引号 //单引号内只能有一个字符,不可以是字符串 //字符型变量对应ASCII编码 cout << (int)ch << endl; system("pause"); return 0; }
转义字符用于表示一些不能显示出来的ASCII字符,
#include<iostream> using namespace std; int main() { //换行符 cout << "Hello World\n"; //反斜杠 cout << "\\" << endl; //水平制表符 cout << "a\tHello World" << endl; cout << "aa\tHello World" << endl; cout << "aaa\tHello World" << endl; cout << "aaaa\tHello World" << endl; cout << "aaaaa\tHello World" << endl; cout << "aaaaaa\tHello World" << endl; system("pause"); return 0; }
#include<iostream> using namespace std; #include<string> int main() { //C风格字符串 char str1[] = "Hello World 1"; cout << str1 << endl; //C++风格字符串 string str2 = "Hello World 2"; cout << str2 << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //布尔类型代表真或假的值 //true,真,本质是1 //false,假,本质是0 //布尔类型占1个字节 bool flag = true; cout << flag << endl; flag = false; cout << flag << endl; cout << "布尔类型所占字节为:" << sizeof(flag) << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //cin 用于从键盘获取数据 int n = 0; cout << "请输入一个整型变量" << endl; cin >> n; cout << "整型变量n等于" << n << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { int a1 = 10; int b1 = 3; cout << a1 + b1 << endl; cout << a1 - b1 << endl; cout << a1 * b1 << endl; cout << a1 / b1 << endl; //两个整数相除结果依然是整数,将小数部分去除 int a2 = 10; int b2 = 20; cout << a2 / b2 << endl; int a3 = 10; int b3 = 0; //cout << a3 / b3 << endl; //除数不可以为0 //两个小数可以相除 double d1 = 0.5; double d2 = 0.25; cout << d1 / d2 << endl; int a4 = 10; int b4 = 3; cout << a4 % b4 << endl; int a5 = 10; int b5 = 20; cout << a5 % b5 << endl; //取模运算本质就是求余数,两个小数是不可以做取模运算的 //前置递增 int a6 = 10; ++a6; cout << a6 << endl; //后置递增 int b6 = 10; b6++; cout << b6 << endl; //前置与后置区别,前置递增变量先+1在运算,后置递增先运算变量在+1 //前置 int a7 = 10; int b7 = ++a7 * 10; cout << "a7 = " << a7 << endl; cout << "b7 = " << b7 << endl; //后置 int a8 = 10; int b8 = a8++ * 10; cout << "a8 = " << a8 << endl; cout << "b8 = " << b8 << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //赋值运算符 // = // += // -= // *= // /= // %= //例 int a = 10; a += 2; //a = a + 2; cout << "a = " << a << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //比较运算符,用于表达式的比较,并返回一个真值或假值 int a = 10; int b = 20; // == cout << (a == b) << endl; //0 // != cout << (a != b) << endl; //1 // < cout << (a < b) << endl; //1 // > cout << (a > b) << endl; //0 // <= cout << (a <= b) << endl; //1 // >= cout << (a >= b) << endl; //0 system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //逻辑运算符,用于根据表达式的值返回真值或假值 //C++中非0数字皆为真 // 非 ! 取反 // 与 && 同真为真,其余为假 // 或 || 同假为假,其余为真 system("pause"); return 0; }
程序流程结构:顺序结构,选择结构,循环结构,
#include<iostream> using namespace std; int main() { //选择结构 int score = 0; cout << "请输入一个分数:" << endl; cin >> score; cout << "您输入的分数为:" << score << endl; if (score > 600) { cout << "恭喜您考上一本大学哦" << endl; if (score > 700) { cout << "恭喜您考上清华大学哦" << endl; } else if (score > 650) { cout << "恭喜您考上北京大学哦" << endl; } } else if (score > 500) { cout << "恭喜您考上二本大学哦" << endl; } else if (score > 400) { cout << "恭喜您考上三本大学哦" << endl; } else { cout << "恭喜您考上家里蹲大学哦" << endl; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { int num1 = 0; int num2 = 0; int num3 = 0; cout << "请输入小猪A的体重" << endl; cin >> num1; cout << "请输入小猪B的体重" << endl; cin >> num2; cout << "请输入小猪C的体重" << endl; cin >> num3; cout << "小猪A的体重为:" << num1 << endl; cout << "小猪B的体重为:" << num2 << endl; cout << "小猪C的体重为:" << num3 << endl; if (num1 > num2) { if (num1 > num3) { cout << "小猪A最重哦" << endl; } else { cout << "小猪C最重哦" << endl; } } else { if (num2 > num3) { cout << "小猪B最重哦" << endl; } else { cout << "小猪C最重哦" << endl; } } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //三目运算符 //表达式1 ? 表达式2 : 表达式3 //若表达式1值为真,执行表达式2并返回其结果 //若表达式1值为假,执行表达式3并返回其结果 //在C++中三目运算符返回的是变量,可以继续赋值 int a = 10; int b = 20; int c = 0; c = (a > b ? a : b); cout << "c = " << c << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //switch语句中表达式类型只能是整型或字符型 //case中如果没有break,程序会一直向下执行 //与if语句相比,switch语句结构清晰,执行效率高,缺点是不可以判断区间 int score = 0; cout << "请您给此电影评分" << endl; cin >> score; switch (score) { case 10: cout << "经典电影" << endl; break; case 9: cout << "经典电影" << endl; break; case 8: cout << "一般电影" << endl; break; case 7: cout << "一般电影" << endl; break; default: cout << "烂片" << endl; break; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //在执行循环语句时,程序必须提供跳出循环的出口,否则会出现死循环 int num = 0; while (num < 10) { cout << "num = " << num << endl; num++; } system("pause"); return 0; }
#include<iostream> using namespace std; #include<ctime> int main() { //利用当前系统时间生成随机数 srand((unsigned int)time(NULL)); //系统生成随机数 int num = rand() % 100 + 1; //cout << "num = " << num << endl; //玩家进行猜测 int val = 0; while (1) { cin >> val; //判断玩家的猜测 if (val > num) { cout << "猜测过大" << endl; } else if (val < num) { cout << "猜测过小" << endl; } else { cout << "猜对了哦" << endl; break; } } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //与while语句区别为,do...while语句会先执行一次循环语句,再判断循环条件 int num = 0; do { cout << "num = " << num << endl; num++; } while (num < 10); system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //水仙花数即,1^3 + 5^3 + 3^3 = 153 int num = 100; do { int a = 0; int b = 0; int c = 0; a = num % 10; //个位 b = num / 10 % 10; //十位 c = num / 100; //百位 if (a* a* a + b * b * b + c * c * c == num) { cout << num << endl; } num++; } while (num < 1000); system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //0 //1 //3 for (int i = 0; i < 10; i++) { //2 cout << i << endl; //执行顺序 } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { for (int i = 1; i < 100; i++) { if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) { cout << "敲桌子~" << endl; } else { cout << i << endl; } } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //外层循环执行一次,内层循环执行一轮 for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { cout << "*" << " "; } cout << endl; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //列数 * 行数 = 计算结果 //列数 <= 当前行数 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { cout << j << " * " << i << " = " << j * i << " "; } cout << endl; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //break语句 //跳出选择结构或循环结构 //出现在switch语句中时,作用是终止case并跳出switch //出现在循环语句中时,作用是跳出当前的循环语句 //出现在嵌套循环语句中时,作用是跳出最近的内层循环语句 //示例1 cout << "请选择您挑战的副本难度:" << endl; cout << "1、普通" << endl; cout << "2、中等" << endl; cout << "3、困难" << endl; int select = 0; cin >> select; switch (select) { case 1: cout << "您选择的是普通难度" << endl; break; case 2: cout << "您选择的是中等难度" << endl; break; case 3: cout << "您选择的是困难难度" << endl; break; default: cout << "GG Baby" << endl; break; } //示例2 for (int i = 0; i < 10; i++) { if (i == 5) { break; } cout << i << endl; } //示例3 for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (j == 5) { break; } cout << " * "; } cout << endl; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //continue语句 //在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环 //continue并没有使整个循环语句终止,但break会跳出循环 for (int i = 0; i < 100; i++) { if (i % 2 == 0) { continue; } cout << i << endl; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //goto语句 //可以无条件跳转语句 cout << "1" << endl; goto FLAG; cout << "2" << endl; cout << "3" << endl; cout << "4" << endl; FLAG: cout << "5" << endl; system("pause"); return 0; }
所谓数组,就是一个集合,里面存放了相同类型的数据元素,数组是由连续的内存位置组成的,
#include<iostream> using namespace std; int main() { //一维数组定义方式 //数据类型 数组名[数组长度]; //数据类型 数组名[数组长度] = {值1 , 值2 ...}; //数据类型 数组名[ ] = {值1 , 值2 ...}; int arr1[10]; int arr2[10] = { 1,2,3,4,5,6 }; //若{}内不足10个数据,剩余数据用0补齐 int arr3[] = { 10,20,30,40,50,60,70,80 }; //数组命名规范与变量命名规范一致,不要和变量重名 //数组下标是从0开始索引 //一维数组名称用途: //可以获取数组在内存中的占用空间 //可以获取数组在内存中的首地址 int arr4[10] = { 1,2,3,4,5,6,7,8,9,10 }; cout << "数组在内存中的占用空间为" << sizeof(arr4) << endl; cout << "数组中每个元素的占用空间为" << sizeof(arr4[0]) << endl; cout << "数组元素个数为" << sizeof(arr4) / sizeof(arr4[0]) << endl; cout << "数组首地址为" << (int)arr4 << endl; cout << "数组中第一个元素地址为" << (int)&arr4[0] << endl; cout << "数组中第二个元素地址为" << (int)&arr4[1] << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { int arr[5] = { 300,350,200,400,250 }; int max = 0; for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { if (arr[i] > max) { max = arr[i]; } } cout << "最大值为" << max << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { int arr[5] = { 1,3,2,5,4 }; cout << "数组逆置前:" << endl; for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { cout << arr[i] << endl; } //起始下标 int start = 0; //结束下标 int end = sizeof(arr) / sizeof(arr[0]) - 1; while (start < end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; //下标更新 start++; end--; } cout << "数组逆置后:" << endl; for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { cout << arr[i] << endl; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //比较相邻元素,如果第一个比第二个大,就交换它们两个 int arr[9] = { 4,2,8,0,5,7,1,3,9 }; //排序轮数 = 元素个数 - 1 for (int i = 0; i < (sizeof(arr) / sizeof(arr[0])) - 1; i++) { //对比次数 = 元素个数 - 当前轮数 - 1 for (int j = 0; j < (sizeof(arr) / sizeof(arr[0])) - i - 1; 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 < sizeof(arr) / sizeof(arr[0]); i++) { cout << arr[i] << endl; } system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //二维数组定义方式 //数据类型 数组名[行数][列数]; //数据类型 数组名[行数][列数] = {{数据1 , 数据2} , {数据3 , 数据4} ...}; //数据类型 数组名[行数][列数] = {数据1 , 数据2 , 数据3 , 数据4 ...}; //数据类型 数组名[ ][列数] = {数据1 , 数据2 , 数据3 , 数据4 ...}; //1 int arr1[2][3]; arr1[0][0] = 1; arr1[0][1] = 2; arr1[0][2] = 3; arr1[1][0] = 4; arr1[1][1] = 5; arr1[1][2] = 6; //外层循环打印行数 for (int i = 0; i < 2; i++) { //内层循环打印列数 for (int j = 0; j < 3; j++) { cout << arr1[i][j] << endl; } } //2 int arr2[2][3] = { {1,2,3}, {4,5,6} }; //3 int arr3[2][3] = { 1,2,3,4,5,6 }; //4 int arr4[][3] = { 1,2,3,4,5,6 }; //二维数组名称用途: //可以获取数组在内存中的占用空间 //可以获取数组在内存中的首地址 cout << "二维数组在内存中的占用空间为" << sizeof(arr2) << endl; cout << "二维数组一行元素的占用空间为" << sizeof(arr2[0]) << endl; cout << "二维数组单个元素的占用空间为" << sizeof(arr2[0][0]) << endl; cout << "二维数组行数为" << sizeof(arr2) / sizeof(arr2[0]) << endl; cout << "二维数组列数为" << sizeof(arr2[0]) / sizeof(arr2[0][0]) << endl; cout << "二维数组首地址为" << (int)arr2 << endl; cout << "二维数组第一行地址为" << (int)arr2[0] << endl; cout << "二维数组第二行地址为" << (int)arr2[1] << endl; cout << "二维数组第一个元素地址为" << (int)&arr2[0][0] << endl; cout << "二维数组第二个元素地址为" << (int)&arr2[0][1] << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { int score[3][3] = { {100,100,100}, {90,50,100}, {60,70,80} }; string names[3] = { "张三","李四","王五" }; for (int i = 0; i < 3; i++) { int sum = 0; for (int j = 0; j < 3; j++) { sum += score[i][j]; } cout << names[i] << "的总分为:" << sum << endl; } system("pause"); return 0; }
函数就是将一段经常使用的代码封装起来,减少重复代码,
#include<iostream> using namespace std; int add(int num1, int num2) //形参 { int sum = num1 + num2; return sum; } int main() { //返回值类型 函数名 (参数列表) //{ //函数体语句 //return表达式 //} int a = 100; int b = 10; int c = add(a, b); //实参 cout << "c = " << c << endl; system("pause"); return 0; }
#include<iostream> using namespace std; void swap(int num1, int num2) { cout << "交换前:" << endl; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; int temp = num1; num1 = num2; num2 = temp; cout << "交换后:" << endl; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; //无返回值时,可以不写return } int main() { int a = 100; int b = 10000; cout << "a = " << a << endl; cout << "b = " << b << endl; swap(a, b); //值传递时,形参发生任何改变,都不会影响实参 cout << "a = " << a << endl; cout << "b = " << b << endl; system("pause"); return 0; }
#include<iostream> using namespace std; //函数常见样式: //无参无返 //有参无返 //无参有返 //有参有返 void test01() { cout << "this is test01" << endl; } void test02(int a) { cout << "this is test02 a = " << a << endl; } int test03() { cout << "this is test03" << endl; return 1234; } int test04(int a) { cout << "this is test04" << endl; return a; } int main() { test01(); test02(222222); int three = test03(); cout << "three = " << three << endl; int four = test04(444444); cout << "four = " << four << endl; system("pause"); return 0; }
#include<iostream> using namespace std; //函数声明可以多次,函数定义只能一次 int max(int a, int b); int max(int a, int b); int main() { int a = 10; int b = 100; int c = max(a, b); cout << "c = " << c << endl; system("pause"); return 0; } int max(int a, int b) { return a > b ? a : b; }
#include<iostream> using namespace std; //函数分文件编写: //创建后缀为.h的头文件(swap.h) //创建后缀为.cpp的源文件(swap.cpp) //在头文件中写函数声明(注意要写标准框架哦) //在源文件中写函数定义(在swap.cpp中包含swap.h 即#include"swap.h") //最后调用时还要在包含一次#include"swap.h"头文件 //函数声明 void swap(int a, int b); //函数定义 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 = 1; int b = 2; swap(a, b); system("pause"); return 0; }
指针的作用为可以通过指针间接访问内存,
#include<iostream> using namespace std; int main() { //指针记录内存地址 //内存地址是从0开始的,一般为16进制 //可以通过 & 操作符获取变量的内存地址 //指针变量和普遍变量的区别: //指针变量存放的是地址,普通变量存放的是数据 //指针变量可以通过 * 操作符,操作指针变量所指向的内存,称为解引用 //指针定义: //数据类型* 变量名; int* p; int a = 10; p = &a; cout << "&a = " << &a << endl; cout << "p = " << p << endl; //指针使用: //*变量名 cout << "*p = " << *p << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { int a = 10; int* p = &a; cout << "*p = " << *p << endl; //解引用 cout << "sizeof(int*) = " << sizeof(int*) << endl; cout << "sizeof(float*) = " << sizeof(float*) << endl; cout << "sizeof(double*) = " << sizeof(double*) << endl; cout << "sizeof(char*) = " << sizeof(char*) << endl; //32位操作系统,所有数据类型指针均占用4个字节 //64位操作系统,所有数据类型指针均占用8个字节 system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //空指针 int* p1 = NULL; cout << *p1 << endl; //野指针 int* p2 = (int*)0x1100; cout << *p2 << endl; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { //const修饰指针,常量指针(指针指向可以修改---p,指针指向的值不可以修改---*p) //const修饰常量,指针常量(指针指向不可以修改---p,指针指向的值可以修改---*p) //const既修饰指针又修饰常量(指针指向和指针指向的值均不可以修改) int a = 10; const int* p1 = &a; int* const p2 = &a; const int* const p3 = &a; system("pause"); return 0; }
#include<iostream> using namespace std; int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int* p = arr; cout << "数组中第一个元素是" << arr[0] << endl; cout << "数组中第一个元素是" << *p << endl; //利用指针遍历数组 for (int i = 0; i < 10; i++) { cout << *p << endl; p++; } system("pause"); return 0; }
#include<iostream> using namespace std; //值传递不会修改实参 void swap01(int a, int b) { int temp = a; a = b; b = temp; } //地址传递会修改实参 void swap02(int* p1, int* p2) { int temp = *p1; *p1 = *p2; *p2 = temp; } int main() { int num1 = 10; int num2 = 20; swap01(num1, num2); cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; cout << "============" << endl; swap02(&num1, &num2); cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; system("pause"); return 0; }
#include<iostream> using namespace std; //数组首地址 //数组长度 int* arr = int arr[] //当数组名称传入函数作为参数时,数组名称退化为数组首地址 void bubbleSort(int* arr, int len) { for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } void printArray(int* arr, int len) { for (int i = 0; i < len; i++) { cout << *arr << endl; arr++; } } int main() { int arr[10] = { 4,3,6,9,1,2,10,8,7,5 }; //数组长度 int len = sizeof(arr) / sizeof(arr[0]); bubbleSort(arr, len); printArray(arr, len); system("pause"); return 0; }
结构体是用户自定义的数据类型,允许用户存储不同的数据类型,
#include<iostream> using namespace std; //定义结构体时,struct关键字不可以省略 struct Student { string name; int age; int score; }s3; int main() { //创建结构体变量三种方式 //创建结构体变量时,struct关键字可以省略 //结构体变量利用 . 操作符访问成员 //1 struct Student s1; s1.name = "张三"; s1.age = 20; s1.score = 100; cout << "姓名 = " << s1.name << " 年龄 = " << s1.age << " 分数 = " << s1.score << endl; //2 struct Student s2 = { "李四",21,99 }; cout << "姓名 = " << s2.name << " 年龄 = " << s2.age << " 分数 = " << s2.score << endl; //3 s3.name = "王五"; s3.age = 22; s3.score = 98; cout << "姓名 = " << s3.name << " 年龄 = " << s3.age << " 分数 = " << s3.score << endl; system("pause"); return 0; }
#include<iostream> using namespace std; struct Student { string name; int age; int score; }; int main() { //将自定义结构体放入数组中方便维护 struct Student stuArray[3] = { {"张三",18,60}, {"李四",19,70}, {"王五",20,80} }; stuArray[2].name = "赵六"; for (int i = 0; i < 3; i++) { cout << "姓名 = " << stuArray[i].name << " 年龄 = " << stuArray[i].age << " 分数 = " << stuArray[i].score << endl; } system("pause"); return 0; }
#include<iostream> using namespace std; struct Student { string name; int age; int score; }; int main() { //通过指针访问结构体中成员 //利用 -> 操作符可以通过结构体指针操作结构体属性 struct Student s1 = { "张三",18,100 }; struct Student* p = &s1; p->score = 99; cout << "姓名 = " << p->name << " 年龄 = " << p->age << " 分数 = " << p->score << endl; system("pause"); return 0; }
#include<iostream> using namespace std; struct Student { string name; int age; int score; }; struct Teacher { int id; string name; int age; struct Student s1; }; int main() { //结构体中成员可以是另一个结构体 struct Teacher t1; t1.id = 1; t1.name = "黄老师"; t1.age = 18; t1.s1.name = "小铭"; t1.s1.age = 3; t1.s1.score = 60; system("pause"); return 0; }
#include<iostream> using namespace std; struct Student { string name; int age; int score; }; //值传递 void printStudent01(struct Student stu) { stu.name = "李四"; cout << "值传递函数打印: 姓名 = " << stu.name << " 年龄 = " << stu.age << " 分数 = " << stu.score << endl; } //地址传递 void printStudent02(struct Student* p) { p->name = "王五"; cout << "地址传递函数打印: 姓名 = " << p->name << " 年龄 = " << p->age << " 分数 = " << p->score << endl; } int main() { struct Student s1; s1.name = "张三"; s1.age = 29; s1.score = 99; //printStudent01(s1); //若想修改主函数中数据,使用地址传递 printStudent02(&s1); cout << "主函数中打印: 姓名 = " << s1.name << " 年龄 = " << s1.age << " 分数 = " << s1.score << endl; system("pause"); return 0; }
#include<iostream> using namespace std; struct Student { string name; int age; int score; }; //函数形参修改为指针时,可以减少内存空间占用,即不会像值传递一样copy副本 //const修饰后,可以防止误操作,即无法修改*p的值 void printStudent(const struct Student* p) { cout << "姓名 = " << p->name << " 年龄 = " << p->age << " 分数 = " << p->score << endl; } int main() { struct Student s1; s1.name = "张三"; s1.age = 29; s1.score = 99; printStudent(&s1); system("pause"); return 0; }
end