目录
一.运算符的优先级
二.数据类型转换
三.switch和if的选择
四.const int*p与int* const p 的区别
五.底层Const和顶层Const的区别
六.不安全函数
六.cin>> 返回值
七.getline返回值是cin
八.计算机英语加油站
九.goto语句
十.cmd
十一.VS播放音乐
十二.宽度与对其
十三.原地交换字符串
十四.终端
十五.string转char*类型
十六.静态库的创建
十七.使用一个循环给二维数组赋值
十八.断言
十九.什么是空指针?
二十.指针与指针相减
二十一.const和指针
二十二.查看变量类型的函数
二十三.C++类中的默认构造函数显示声明
二十四.输入密码时候,隐藏密码
二十五.解决多文件开发头文件重复包含的方法
二十六.指针数组与数组指针
二十七.void空指针
二十八.函数指针
二十九.引用类型
三十.指针引用
三十一.内存复制函数
三十二.函数的栈空间(避免栈空间溢出)
总结:
对知识的查漏补缺
- 个人主页:北·海
- CSDN新晋作者
- 欢迎 点赞✍评论⭐收藏
- ✨收录专栏:C/C++
- 希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!
一共15个级别
int i =0;
int t = 2;
const int *p = &i;//可以改变p的指向,但是不能通过*p改变指向变量的值
int* const p1 = &i;//可以通过*p改变指向变量的值,但是不能在指向其他变量了
//*p = 3;//error
//p = &t;//pass
//*p1 =3;//pass
//p1 = &t;error
顶层const,指针本身是常量
int x;
scanf_s("%d",&x);//不需要使用第三个参数,用法和scanf相同
float f;
scanf_s("%f",&f);//不需要使用第三个参数,用法和scanf相同
char c;
scanf_s("%c",&c,sizeof(c));//需要使用第三个参数,否则有警告
char name[16];
scnaf_s("%s",name,sizeof(name));//需要使用第三个参数
int age;
char name[16];
scanf_s("%d%s",&age,name,sizeof(name));
char line[32];
gets_s(line,sizeof(line));
if(!(cin>>word)){}//方法1
if((bool)(cin>>word) == 0){}//方法2
getline(cin, word) >> count;
if(getline(cin,line)==0){}//错误,不能通过编译
string ret;
for(int i = 0;i<5;i++){
cout<<"开始第"<>ret;
if(ret != "yes") continue;
else{
cout<<"我中意你,你中意我吗?"<>ret;
if(ret == "yes"){
goto happy;
}
}
}
happy :
cout<<"幸福生活"<
#include
#prama comment(lib,"winmm.lib")
mciSendString(_T("play 音乐地址 repeat"),0,0,0);
string str;
int left,right;
cout<<"输入一个字符串: ";
cin>>str;
left = 0;
right = str.length()-1;
while (left
using namespace std;
void print(const char * str){
cout<
int nums[3][4];
for(int i = 0 ;i<12;i++){
nums[i/4][i%4] = i+1;
}
int *p =NULL;
if(p){
//指针不为空,对指针进行操作
}
#include
using namespace std;
int main() {
int wife = 30;
int girl = 18;
//第一种 : 渣男型,普通指针可以随意更改指向与指向地址的值
int* zha_nan = &wife;
cout << *zha_nan << endl;
zha_nan = &girl;
cout << *zha_nan << endl;
//第二种 : 直男型,以自我为中心,可以改变指向,但是不可以改变指向的地址的值
const int* zhi_nan = &wife;
//*zhi_nan = 25;//报错,不能改变值
zhi_nan = &girl;
cout << *zhi_nan << endl;
//第三种 : 暖男型,专一,不可以改变指向,但是可以改变指向的地址的值
int* const nuan_nan = &wife;
//nuan_nan = &girl;//报错,不能改变指向
*nuan_nan = 25;
cout << *nuan_nan << endl;
//第四种 : 超级暖男型,超级专一,不能改变指向,也不能改变指向地址的值
const int* const _super_nuan_nan = &wife;
//*_super_nuan_nan = 25;//报错,不能改变指向地址的值
//super_nuan_nan = &girl;//报错,不能改变指向
//总结 : const理谁近就修饰谁,理(int)近,则修饰该指针的值不能改变,修饰变量,
// 则该指针不能在指向别的变量了
}
#include
#include
using namespace std;
int main() {
int i = 10;
int* k = &i;
cout << typeid(k).name()<< endl;
}
salary_data()
的定义应该在类的声明中进行,并且必须是构造函数的声明之一。在类声明中可使用 = default
,但在类的定义(实现)中则不能使用 = default
。在类定义中,如果没有显式提供构造函数的实现,编译器会自动生成默认构造函数的实现。
//密码输入
void Input_pwd(char* pwd,int size) {
char c = 0;
int i = 0;
while (1) {
c = getch();//不会回显
if (c == '\r') {//getch函数读到回车符号为\r
pwd[i] = '\0';
break;
}
else {
cout << '*';
pwd[i++] = c;
}
}
cout << endl;
}
#例如在cs.h文件内,宏名一般用该格式,没要求
#ifndef _CS_H_
#define
//代码块
#endif//对应的是ifndefine
int a = 10;
int *p1 = &a;
void* p = &a;
//cout << *p << endl; error 空指针
//p1 = p;//error
p1 = (int *)p;//需要进行强制类型转换
p = p1;//可以,其他类型可以转换为空指针
例如
//函数
int compare_int (const int *,const int *);
//该函数的指针
int (*fp) (const int *,const int *);
//给该指针赋值
fp = &compare_int;
//传参数两种方式
(*fp)(&x,&y);//第一种,按普通指针解引的方式进行调用
fp(&x,&y);//第二种,直接调用
//(*fp)等同于compare_int
int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b ;//由小到大排序
//换成b-a之后是从大到小排列
}
int cmp(const void *a, const void *b) {
return *(int*)b - *(int*)a ;
}
int main() {
int q[2] = { 1,2 };
qsort(q, sizeof(q) / sizeof(int), sizeof(int), &cmp);
cout << q[0] << " " << q[1] << endl;
}
#include
#include
using namespace std;
int swap1(int& a, int& b) {
int temp = a;
a = b;
b = temp;
return 0;
}
int swap2(int* const a, int* const b) {
int temp = *a;
*a = *b;
*b = temp;
return 0;
}
int main() {
int x = 10;
int y = 100;
swap1(x, y);
cout << "x = " << x << " y = " << y << endl;
swap2(&x, &y);
cout << "x = " << x << " y = " << y << endl;
}
//编辑器会将引用类型的swap1在编译时候转换成swap2的形式
可以代替二级指针
int home1(int ** meipo) {
static int boy = 18;
*meipo = &boy;
return 0;
}
int home2(int* & meipo) {
static int boy = 18;
meipo = &boy;
return 0;
}
int main() {
int* meipo = nullptr;
home1(&meipo);
cout << "meipo = " << *meipo << endl;
//指针引用,可以代替二级指针,
home2(meipo);
cout << "meipo = " << *meipo << endl;
return 0;
}
memcpy(&b,&a,sizeof(a));
//将a变量内存,复制给b内存一份,大小为a变量的大小
#include
using namespace std;
int main() {
char buff[2000000];
cout << (int)buff[sizeof(buff) - 1] << endl;