北京国互网网站建设公司,asp网站后台密码破解,南阳网站优化软件,网络平台推广具体是干啥一.输入密码时候,隐藏密码
用函数getch(),头文件#includeconio.h输入一个字符时候不会回显,getc会回显实现思路: 输入一个字符,由于不知道密码长度,所以设置为死循环,如果不是回车键,即将该字符添加到存放密码的数组里,顺便打印一个星号,如果输入的为回车键,由于getch…一.输入密码时候,隐藏密码
用函数getch(),头文件#includeconio.h输入一个字符时候不会回显,getc会回显实现思路: 输入一个字符,由于不知道密码长度,所以设置为死循环,如果不是回车键,即将该字符添加到存放密码的数组里,顺便打印一个星号,如果输入的为回车键,由于getch()函数读入回车键时候,返回的是\r,所以如果是\r,则将字符数组的末尾加上\0,再跳出循环 //密码输入
void Input_pwd(char* pwd,int size) {char c 0;int i 0;while (1) {c getch();//不会回显if (c \r) {//getch函数读到回车符号为\rpwd[i] \0;break;}else {cout *;pwd[i] c;}}cout endl;
}
二.解决多文件开发头文件重复包含的方法
由于使用多文件开发,需要再cpp文件里面包含.h文件,再将多个.h文件相互包含,可能会出现重复包含的情况,解决方法 : VS里面特定的方式是,在.h文件的开头加上 #pragma once公用方法 :在.h文件里面用宏定义, #例如在cs.h文件内,宏名一般用该格式,没要求
#ifndef _CS_H_
#define
//代码块#endif//对应的是ifndefine
三.指针数组与数组指针
数组指针 例如 int (*p)[3];数组指针访问方法 ( p A[0] ) 数组法 : (*p)[j];指针法 : *((*p)j) *( *(p i) j)指针数组 例如 int *p[3];.每个元素都是一个变量的地址
四.void空指针
其他类型可以自动转换为void类型,但是void类型要转换成其他类型需要强制类型转换空指针不允许进行算术运算,因为大小不知道空指针里面仍然存储的是变量的地址,只是类型不知道 int a 10;int *p1 a;void* p a;//cout *p endl; error 空指针//p1 p;//errorp1 (int *)p;//需要进行强制类型转换p p1;//可以,其他类型可以转换为空指针
5.函数指针
函数指针的定义 : 把函数声明移过来,把函数名改为(* 函数指针名)
例如
//函数
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
qsort()函数 语法 qsort(数组名,数组元素个数,每个元素占的字节,cmp函数);qsort参数为void类型指针,可以比较任何数据类型cmp函数格式
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;}
字符比较,混杂大小写,在比较时候不考虑大小写的方法 六.引用类型
引用变量本身也会占内存,内存的大小等于一个指针变量的大小对同一内存空间可以取好几个别名引用可以定义多个,引用也有自己的空间,引用变量像常指针,编辑器在编译时会将引用改为指针在c的底层引用就是用指针实现的 Type name ----- Type* const name在使用的角度,引用会让人误会是一个别名,没有自己的存储空间,这是c为了实用性而做出的细节隐藏
#include iostream
#include stdio.husing 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变量的大小