C++学习笔记(一)

整理了大一学C++的一些笔记(一)


以下是本篇文章正文内容

一、C++是什么?

这里引用某百科的一段:

C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。

**- 如果初学的话可以认为C++和C语言差不多, 我们知道C语言是一种面向过程编程的语言,但是C++是一种面向对象的编程语言,大家可能就要有疑惑了,什么是”面向对象的编程语言”呢,这里再引用某百科的一段

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

简单来说,大家可以理解为面向对象是面向过程的一种不同的执行方法 ,比如:我们在吃饭的时候,要有一个过程吧,做饭,盛饭,吃饭,三个步骤,你可以在main里面写,先做饭,再盛饭,然后吃饭。这是面向过程的理解。

如果用面向对象的角度,我们就可以写三个函数,做饭函数,盛饭函数,吃饭函数。我可以做了饭不盛,也可以盛了饭不吃,只关乎于我怎么调用这些函数,而你main里面写的做饭盛饭吃饭是不是少一个,程序就进行不下去了呀。这就是面向对象和面向过程的区别,很好理解吧。

二、C++的特点

1.不同于C文件的.C后缀名,C++文件的后缀名是 cpp (就是c plus plus的缩写)

2.基础头文件:#include< iostream >,如果用到C语言头文件不要写.h,在前面加个c,

比如#include< stdio.h>换成#include< cstdio> , < cstdlib>等等,当然.h也可以,只是c更帅一点

3.namespace,命名空间,这是一个新名词,首先要大家记住这件事,在你写的每个程序开头,都要这么写

#include<iostream>
using namespace std;

至于为什么,咱们以后再说

4.变量的定义:C++可以随用随定义,不需要提前定义好。例如:可以在for循环开始前定义 i

for(int i = 0;i<n;i++){
....
}

5. 与C语言不同的:

1> c语言没有对全局变量重定义的检测,c++会报错全局变量重定义。
2>c语言定义一个结构体(不加typedef),再定义一个结构体变量时需要写struct,否则会报错,而c++不需要写struct。
3> c语言定义函数如果不声明类型,默认类型为int,c++会检测出错,让你去声明类型。

#include <stdio.h> //c语言不会检测出error
get_num() {
	
}
int main(int argc, char *argv[]) {
	return 0;
}
---------------------------
#include <iostream>  //c++会有error
get_num{

} 
int main(int argc, char** argv) {
	return 0
 }            //[Error] 'get_num' does not name a type

4> 布尔类型(bool)
只有true和false两个值,true数值为1,false数值为0.
只要赋值不为0,true的值都为1
bool类型大小只有1个字节
可以将任何值赋值给bool类型的变量
以下4个值为false :
0 , ‘\0’ ,NULL , false

bool b = 1;
b = true;
b = "OK"

其他一切值如果赋值给bool类型的变量都视为true
5> 三目运算符可以当左值。

#include <iostream>
using namespace std;
int main(void){
    int a=5,b=7;
    (a>b)?a:b = 10;
    cout<<((a>b)?a:b)<<endl;
}//运行结果:10

6> c++中枚举变量只能赋值给枚举,不能直接赋值

enum season{ SPR = 0,SUM,AUT,WIN
}
enum season s = 2;//错误
enum season s = AUT;//正确

7>如果对一个常量取地址,编译器会临时开辟一个空间,让指针存放这个临时空间的地址 .这个常量不会变,但是这个指针可以改变值。

6.引用的用法

1>数据类型 &名字=变量
作用:名字成为变量的别名

*PS:1>引用没有定义,是一种关系型声明。声明它和原有某一变量的关系。故而类 型与原类型保持一致,且不分配内存。与被引用的变量有相同的地址。
2>声明的时候必须初始化,一经声明,不可变更。
3>可对引用,再次引用。多次引用的结果,是某一变量具有多个别名。
4>& 符合前有数据类型时,为引用,其他均为取地址
*

2>函数参数的引用
例:

void swap(int &a,int &b)//整形引用
{    
    int temp;
    temp=a;
    a=b;
    b=temp;
}
       
void  STU(struct student &s)//结构体变量引用
{
cout << s.id << " " << s.name << endl;
}

3>引用作为函数参数的返回值:

int &getnum(){
	static int num=10;
	return num;
}
int main(void) {
	getnum()=100;
	cout << "num=" << getnum() << endl;
}

函数可以当左值,前提是返回的是静态变量或全局变量

4>指针引用

#include <iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
struct teacher{    //结构体 老师
	int id;
	char name[64];
}; 
int get_mem(struct teacher* &tp)   //形参的引用,不需要使用指针,简化了函数
{
	tp=(struct teacher *)malloc(sizeof(struct teacher));//分配空间
	if(tp==NULL){
	return -1;
	}
	tp->id=100;
	strcpy(tp->name,"li4");
	return 0;
}
void free_teacher(struct teacher *&tp)  //free函数
{
	if(tp=NULL){
		return;
	}
	if(tp!=NULL){
		free(tp);
		tp=NULL;
	}
}
int main(void) {
	struct teacher *tp=NULL;
	get_mem(tp);
	cout << tp->id<<endl<<"name  "<<tp->name <<endl;
	free_teacher(tp);
	return 0;
}

5>const引用
常量引用的格式:const int &a。

int main(void){
    const int c = 10;
    const int &r1 = c;    // 正确,引用及其对应的对象都是常量
    r1 = 20;    // 错误,r1是对常量的引用,不可改变
    int &r2 = c;    // 错误,不能让一个非常量引用指向一个常量对象
}

对一个const常量进行引用,必须是一个const引用

int i = 20;
const int &r1 = i;    // 允许将const int&绑定到一个普通int对象上
const int &r2 = 30;    // 正确,r2是一个常量引用
const int &r3 = r1 * 2;    // 正确,r3是一个常量引用
int &r4  = r1 * 2;    // 错误,r4是一个普通的非常量引用

对一个普通变量,可以使用const引用


总结

以上就是今天要讲的内容,简单介绍了一下C++,剩下的我们之后再说
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值