C++基础(适用所有大一新生及C++自学/初学者)

目录

1.动态初始化

2.数据类型

3.bool型

4.无名参数

5.指针类型转换

6.循环体内声明循环控制变量

7.复合语句中定义变量

8.使用"::变量名"可以访问具有文件作用域的变量 

9.变量作用域的演示实例

10.数组边界核查

11.使用cin.getline从键盘读入字符串

12.const修饰符

13.C++其它常见修饰符

14.引用(&)和指针

15.内联函数inline

16.默认参数(带默认参数的函数)

17.函数重载


//通过以下代码可以直接建立起完整的C++知识框架

//俺觉得计算机是个技能型学科,知识点什么的在敲代码的过程中学习就好了

1.动态初始化

//动态初始化
#include<iostream>
using namespace std;
int main(){  //跟C语言不同,想使用的时候才定义变量!!! 
	double radius=4.0,height=5.0;
	cout<<"Enter the height"<<endl;
	cin>>height;
	double volume=3.1416*radius*radius*height;  //动态初始化
	cout<<"Volume is "<<volume<<endl; 
	return 0;
}  //目的是为了配合类的构造函数 

2.数据类型

//数据类型
#include<iostream>
using namespace std;
int main(){
	cout<<"整型:short int、int、long int"<<endl;
	cout<<"实型:float、double、long double"<<endl;
	cout<<"bool型:bool"<<endl;
	cout<<"字符型:char"<<endl;
	cout<<"空类型:void"<<endl;
	cout<<"枚举型:enum"<<endl;
	cout<<"联合(共用体):union"<<endl;
	cout<<"结构:struct"<<endl;
	cout<<"类:class"<<endl;
	cout<<"指针:*"<<endl;
	cout<<"引用:&"<<endl;
	cout<<"数组:[]"<<endl;
    cout<<"可以加signed,unsigned修饰符"<<endl
	return 0;
} 

3.bool型

//bool类型
#include<iostream>
using namespace std;
int main(){
	bool b=false;
	cout<<b<<endl;
	b=7;      //等价于b=true 
	cout<<b<<endl;
	b=3==4;   //给b输入的是3是否等于4的结果,若正确b=1,错误则b=0 
	cout<<b<<endl;   //输出的是0(false)或1(true),是数字不是true & false!!! 
	return 0;
}

4.无名参数

//无名参数
//作用:1.用于以后扩展  2.同于函数重载 
#include<iostream>
using namespace std;
void func(int x,int);  //第二个参数无名,(x可省略)函数原型声明,C和C++都允许省略形参名 
int main(){
	func(11,88)
	return 0;
}
void func(int x,int){  //C++允许略写参数名,C不能省略(尽管没有用到这个参数) 
	cout<<x<<endl;
}

5.指针类型转换

//指针类型转换
#include <iostream>
using namespace std;
int main() {
  int i=10,*pi;
  double d=double(i); //显式类型转换
  //等价于double d=(double)i;
  cout<<d<<endl;

  void *pv=&i; //正确

  pi=(int *)pv; //正确
  //pi=static_cast<int *>(pv); //正确
  //pi=reinterpret_cast<int *>(pv); //正确
  
  //pi=pv;  //错误
  
  cout <<*pi<<endl;
  
  //cout <<*pv<<endl; //错误
}

6.循环体内声明循环控制变量

//循环体内声明循环控制变量
#include<iostream>
using namespace std;
int main(){
	int sum=0,fact=1;  //factorial阶乘 
	for(int i=1;i<=5;i++){
		sum+=i;
		fact*=i;  //i is known throught the loop
	}
	//but i is not known here
	cout<<"Sum is:"<<sum<<endl;
	cout<<"Factorial is:"<<fact<<endl;
	return 0;
} 

7.复合语句中定义变量

//复合语句中定义变量
#include<iostream>
using namespace std;
void func(int a);
int main(){
	func(10);
	return 0;
} 
void func(int a){
	cout<<a<<endl;  //输出10 
	if(a==10){
		int a=5,i=20;
		cout<<a<<i<<endl;  //输出520 
	}
	//cout<<i<<endl;  (错误,i无定义) 
}

8.使用"::变量名"可以访问具有文件作用域的变量 

//使用"::变量名"可以访问具有文件作用域的变量 
#include<iostream>
using namespace std;
int hour,minute;  //定义全局变量
void incTime(int hour,int minute); 
int main(){
	int hour=23,minute=58;  //定义局部变量 
	incTime(::hour,::minute);  //访问全局变量 
	incTime(hour,minute);      //访问局部变量 
	incTime(::hour,::minute);    //访问全局变量 
	return 0;
}
void incTime(int hour,int minute){
	minute++;  //形式参数 
	if(minute>=60){
		minute=0;
		hour++;  //形式参数 
	    if(hour>=24) hour=0;
	}
	::hour=hour;  //使全局变量等于局部变量 
	::minute=minute;
    cout<<"The time is "<<hour<<":"<<minute<<endl;
}

9.变量作用域的演示实例

//变量作用域的演示实例 
#include<iostream>
using namespace std;
int x=1;
void func();
int main(){
	cout<<"全局变量"<<x<<endl;
	cout<<"通过::限定符访问全局变量"<<::x<<endl;
	func();
	return 0;
} 
void func(){
	int x=2;  //局部变量,隐藏了全局变量
	cout<<"局部变量"<<x<<endl;
	{
		int x=3;  //复合语句中定义的局部变量
		//它隐藏了局部和全局变量
		cout<<"复合语句中定义的局部变量"<<x<<endl;
		cout<<"可以通过::限定符访问全局变量"<<::x<<endl;
		cout<<"但不能访问被隐藏的局部变量"<<endl; 
	} 
	cout<<"复合语句结束后又可以访问局部变量"<<x<<endl;
	cout<<"当然还是可以通过::限定符访问全局变量"<<::x<<endl;
}

/*******************************************
程序输出结果如下:
全局变量1
通过::限定符访问全局变量1
局部变量2
复合语句中定义的局部变量3
可以通过::限定符访问全局变量1
但不能访问被隐藏的局部变量
复合语句结束后又可以访问局部变量2
的人还是可以通过::限定符访问全局变量1
********************************************/

10.数组边界核查

//数组边界核查
//C++和C语言都不会对数组边界进行核查 
#include<iostream>
using namespace std;
int main(){
	int i=0,crash[10];
	for(;i<100;i++){
		crash[i]=i;  //执行上述程序片段将造成不可预料的结果,并且错误难于定位
	}
/*	for(int j=0;j<100;j++){   //测试 
		cout<<crash[j]<<endl;
	}   */     
	return 0;
} 

11.使用cin.getline从键盘读入字符串

//从键盘读入字符串
//cin不能输入空白符,遇到空白符停止(在字符数组中可能输入会超过数组边界-遇到空白符才停止) 
/*cin.getline:第一个参数是要存储字符串的数组的名称。第二个参数是数组的大小。
当 cin.getline 语句执行时,cin读取的字符数将比该数字少一个。为null终止符留出空间。 */
#include<iostream>
using namespace std;
int main(){
	char s[80];
	cout<<"Enter a string"<<endl;
    //cin>>s;  //read string from keyboard
    //应改为:   (否则遇空白停止,可能输入超过80个字符)
	cin.getline(s,80);  //最多输入79个字符,null 终止符将自动放在数组最后一个字符的后面。 
	cout<<"Here is your string: "<<s<<endl;
	return 0;
} 

12.const修饰符

/* const修饰符在C++中很常用(const修饰符是不变的意思) 
在C语言中,下述语句是错误的:

    const int N=10;
    //必须改为 #define N 10 
    int a[N]; 

但在C++中,上述语句是允许的  */ 

 
/*
!!!返回min, &min, const &min 的区别!!! 
1.返回min(对象
  返回的是值,只能出现在赋值符号的右边,效率较低,将欲返回的对象用"拷贝构造函数"
  拷贝给调用者,然后调用"析构函数" 销毁这个临时对象。
    
2. 返回&min(对象引用)
  返回的是引用,可以出现在赋值符号的左边(当然可以出现在赋值符号的右边),
  将欲返回的对象引用(实际上就是地址)直接赋值给调用者,效率较高。
  
3.返回const &min(常对象引用)
  返回的是常引用,只能出现在赋值符号的右边,将欲返回的对象引用(实际上就是地址)
  直接赋值给调用者,效率较高。对自定义的类一般用这种方式返回,常常用来取代第一种方式 
*/ 


/*
1、const double PI=3.14; 
//常量

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值