今天是马上要做测试,所以临阵磨枪赶紧学习总结一波的北。果然成为大佬的路途道阻且长。我估计是无望了…
关于C++学习初步总结(2)C++对C的扩展2
刚写了个开头就测试了,测试磨灭了我的激情,啊,为什么要学习呢
1.变量的引用
1.功能:为变量取别名
格式:类型 &变量1=变量2 //两个变量不能用同一个别名
#include <iostream>
using namespace std;
void swap(int &a,int &b)
{ int temp;
temp=a;
a=b;
b=temp;
}
int main( )
{int i=3,j=5;
swap(i,j); //交换两个变量的值
cout<<i<<","<<j<<endl;
return 0;
}
将引用作为函数参数
void swap(int a,int b) //普通变量
void swap(int &a,int &b)//引用变量
别名代换:
同一个变量可以有多个别名,多个变量不能共用一个别名。
对引用的进一步说明
1)引用变量都具有非void类型
(2)不能建立引用的数组
(3)可以建立常引用变量,不允许修改常引用变量的值
例:
int i ;
const int &a = i;
a = 3; // 错误的用法
i = 8; // i 不是常变量,可以修改
(4)可以建立指针变量的引用变量
例:
int i;
int *p = & i;
int * &pt = p; // pt是p的别名变量,同时
// 也是指针变量
2.内置函数
inline 函数类型 函数名(形参表)
{ 函数体 }
#include <iostream>
using namespace std;
inline int max(int a,int b,int c) // 这是一个内置函数,
// 求3个整数中的最大者
{if (b>a) a=b;
if (c>a) a=c;
return a;
}
int main( )
{int i=7,j=10,k=25,m;
m=max(i,j,k);
cout<<"max="<<m<<endl;
return 0;
}
使用内置函数可以节省程序的运行时间,但增加了目标程序的长度。所以在使用时要衡量时间和空间的得失。
3.作用域运算符
局部变量和全局变量同名:
#include <iostream>
using namespace std;
float a=13.5;
int main( )
{ int a=5;
cout<<a<<endl;
return 0; }
程序中有两个变量a,一个是全局变量,另一个是main函数的局部变量,根据局部变量会屏蔽同名的全局变量规则,在函数中出现的变量a是局部变量,因此输出的值是5,而不是13.5,为了在函数中访问全局变量C++提供了作用域运算符
::
,可以用来指定要访问的作用域,可以把main函数改写成
#include <iostream>
using namespace std;
float a=13.5;
int main( )
{int a=5;
cout<<a<<endl;
cout<<::a<<endl;
return 0;
}
::a
表示全局变量a
。注意不能用::
访问局部变量。
4.字符串变量
定义字符串变量
格式:string 变量名表;
可以在定义变量时用字符串常量为变量赋初值:string 变量名 = 字符串常量
注意:如用字符串变量,在程序开始要用包含语句把C++标准库的string头文件包含进来。
5.动态分配/撤销内存的运算符new和delete
1.分配内存运算
new 类型 [ (初值)]
类型是决定分配空间尺寸的关键元素,如果运算结果正确,它的值是分配内存空间的起始地址,否则返回NULL。
例:
int *a =new int ;
int *b =new int( 100);
char *ch = new char[10];
int (*q)[4] = new int [5][4];
float * p = new float(3.14159);
2.归还动态内存运算
delete[] 指针变量
[] 代表数组,如果不是数组可以省略[]。
运算功能:撤销指针变量所指的动态内存空间,指针变量的数据类型决定了空间尺寸的大小。
例:
char *p=new char[10];
… …
delete [ ] p;
//用动态内存存放结构体变量
#include <iostream>
#include <string.h>
using namespace std;
struct student
{char name [10];
int num;
char sex;
};
int main ( )
{student *p;
p=new student;
strcpy(p->name,"Wang Fun");
p->num=10123;
p->sex='M';
cout<<p->name<<" "<<p->num<<" "<<p->sex<<endl;
delete p;
return 0;
}