菜鸟 C++ learning 2

#include
#include
#include
using namespace std;
/*struct Cla 
{
	int i;
	char c;
};*/
int a(int x){
	return x;
}
int func();
int main(){
	func();
	return 0;
}
/*void tryf(int (*a)[],int n,int m){
	for(int i = 0;i
	1.strcat(str1,str2)将str2的字符串接在str1后面,注意srt1的数组大小要足够放下两个字符串.虽然如果放不下虽然不会报错,但是有可能超出数组限制的范围从而导致破坏其他数据
	This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
	2.strcpy(str1,str2)将str2的字符串复制到str1的数组中,且同时复制\0。同样如果复制的字符串大小太大会无法全部复制进去
	3.strcmp(str1,str2)比较两个数的ASCII码,str1-str2返回相减的值,只有==0才相等
	4.strlen(str)返回不含\0的实际长度
	*/
	//7.4指针
	/*
	指针的变量名是p *是指针运算符 &是取地址运算符
	int *p = &a; 等效于 int*(p=&a)
	指针运算:
		p++,p--按照声明的类型向右或者向左移动一个类型单位长度
	指向空的指针与指向空类型的指针:空类型:void 空对象:nullptr
	指向空的指针可以接受任何类型数据的地址
	//初始化:
	void*p = NULL;//空对象的指针
	int i = 10;
	p = &i;
	//使用:
	//cout<数组指针+数组个数
		char string[] -->char *string[]
		二维数组->内层数组的数组指针(内层数组个数已知的情况下)
		否则:error C2036: “int (*)[]”: 未知的大小
		否则使用指到最下层的指针:(int*p = &A[0][0], int n,int m)//A是int的二维数组,指向A需要int(*p)[2][3],指向A的下层数组需要int(*p)[3],指向最下层元素则直接使用int*p;
		for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cout <<*( p+(i*m+j)) << ' ';
		}
		cout << endl;
	}
		
		使用右值引用传递参数:将使用临时值作为函数传入参数时,应该使用右值引用进行承接.并且严格C++11标准左值引用不可以接右值数据,右值引用也不可以绑定到左值上,所以可以使用左右值引用进行重载
		
	*/
	//8.1结构体
	/*
	如果一种类型可以将多个数据包裹在一起,则会大大降低程序的离散型,使得程序更加符合逻辑
	struct structure_name{
		member_type_1 member_name1;
		member_type_2 member_name2=default_value;
		...
	}[defined_variable_name1(optional),defined_variable_name2(optional)];
	结构体赋值:如果是字符串变量则要使用strcpy来进行深度拷贝而不是直接浅拷贝
	如果是在声明变量时进行初始化可以使用大括号集中赋值
	特殊的声明与赋值:
		struct A{
			...
		} vari = {1,2,3,4,...};//声明的同时进行赋值
		struct A{
			...
		}*pointer;//同时生成结构指针变量(没有指定指针变量的指向,只是创建了一个未赋值的指针)
		//p 是 nullptr 有自动初始化
		结构体大小:在没有设置单位对齐下,默认结构体的大小为所有元素大小之和
		注意:结构体可以在main函数中声明并且声明变量
		int main(){
			struct A{...}vari;
			return 0;
		}
	*/
	//8.2重命名数据类型
	/*
	使用typedef:
	typedef ori_type New_type_name;
	e.g. typedef int flag;//后面在使用int的地方都可以使用flag进行代替,相当于给int起了一个别名,可以给用户自定义的类型起别名
	但是实验证明即使使用了typedef使用flag声明的变量还是int类型
	typedef class zxcvbnm { int i = 0; }A1,A2;
	//这里的A1,A2是别名而不是变量名,如果没有typedef才会成为变量名
	同样的typedef zxcvbnm flag;依旧成立
	typedef可以为复杂名称的变量取别名,方便书写
	也可以调正他人设定的变量名称使其符合自己的编程习惯
	注意:
		typedef是存在作用域的,其作用域大小与typedef所在作用域一致
		typedef少量使用有利于身心健康,但是过度使用会降低代码可读性,使得他人难以理解
	*/
	//8.3枚举类型的应用
	/*
	在事物概念中有些数据只需要离散的进行标记,则使用int就可以完成,但是在阅读代码是很难将数值与实际事物联系起来,所以产生了枚举类型,相当于对于一组常量进行起别名
	enum week{monday,tuesday,wednesday,thursday,friday,saturday,sunday};
	cout<

你可能感兴趣的:(学习笔记)