复合类型和函数

一、复合类型

1、指针

定义指针类型的变量

类型 *指针变量

指针存放指定类型的对象的地址,要获取队形的地址,使用取地址运算符“&”。

例如:

int x=100,y=20;
int *pi=&x;
*pi=y;  //间接操作pi指向的x,即x=y

2、new和delete

new在动态内存中为对象分配空间,并返回一个指向该对象的指针,可以选择对对象进行初始化。delete接受一个动态对象的指针,销毁指针指向的对象,并释放与之关联的内存。

3、引用

引用又称别名,它可以作为对象的另一个名字。通过引用可以间接的操纵对象,使用方式类似于指针但是不需要指针的语法,

定义

类型&引用变量=初始值;

int ival=100;
int &refval=ival;//refval是变量ival的引用绑定到ival

引用一旦初始化,就不能再绑定带其他对象,对引用的所有对象都会应用在他所绑定到的对象上。

赋值时,引用被作为所指对象的别名。

4、右值引用

在赋值表达式中,出现在赋值号左边的就是左值,出现在赋值号右边的就是右值。

定义

类型 &&右值引用变量 =右值表达式;

右值引用只能绑定到临时对象,右值引用的对象将要被销毁。

变量是左值,因此不能将右值引用直接绑定到变量上,即使这个变量类型是右值引用类型也不行。

5、const限定指针和引用

const只读属性,只使用不修改,限定常量。

指向常量的指针;指向非const对象的指针常量;指向const对象的const指针;const限定引用。

6、结构体

结构体在程序中经常用得到,所以这个使用起来是非常熟悉的。

结构体把一组来自不同类型的数据组合在一起构成复合类型,其中的每个数据都是结构体的成员。结构体由关键字struct定义,语法形式为

struct 结构体类型名{

成员声明;

};

7、标准数据库string

string类的输入操作:
读取并忽略开头所有的空白字符(空格,换行,制表);
读取字符直至再次遇到空白字符,读取终止,

string s1,s2;
cin>>s1>>s2;
cout<<s1<<s2<<endl;
输入“  Hello  World  ”
输出将是 “HelloWorld”

sring类型上的操作

 getline(is,s)//从istream对象is中读取一行(用到换行符结束)赋给s,返回is。
    s.empty()
    s.size()//返回s中字符的个数,返回类型为string::size_type
    s[n]//n从0开始
    s1+s2//连接起来
    s1==s2//完全相等,区分大小写
    <,>,<=,>=//按字典顺序比较,区分大小写

string上的字符操作

isalnum(c)//当c是字母或数字时为真。
    isalpha(c)//字母
    isdigit(c)//数字
    ispunct(c)//标点
    isspace(c)//空格,回车,制表符,换行符

    isupper(c)//大写字母
    islower(c)//小写字母
    tolower(c)//大写————>小写
    toupper(c)//小写大写

8、vector

vector在平时也使用了很对,所以在这里只是简单总结了一下。

头文件: #include <vector>

定义:vector <data_type> vector_name;如:vector <int> v;

操作:empty() -- 返回bool型,表示vector是否为空 (v.empty() )

size() -- 返回vector内元素

push_back(data_type a) 将元素a插入最尾端pop_back() 将最尾端元素删除

s.swap(v)           //  将s与另一个vector对象进行交换

v[i] 类似数组取第i个位置的元素(v[0] )
9、迭代器

迭代器类似于指针。

支持迭代器的类型都有返回迭代器的成员:begin()和end()。

注意:end()指的是最后一个元素的下一个位置。

两个begin()和end()相减的结果就是他们之间的距离。

二、函数

在这里函数的基本定义就不用说了,还有如何调用参数什么地就不用再说了。

需要注意的一点是:在写实参时,千万不要写数据类型。

 

在这里来说一下,函数是如何调用参数,以及整个过程。

首先我们在主函数外写了一个函数,并写上了形参。

当在主函数内,利用调用参数使用这个函数,此时整个函数的主动权有主函数的手里进入到函数中,此时程序在我们写的那个函数里面运行,运行结束后,根据return返回到主函数里面来,主动权也交到了主函数手里,此时整个程序和我们写的那个函数已经没有什么关系了。

另外有关参数传递在前面已经写过了,所以在这里就不再复述了。

 

函数重载

重载函数

 

名字相同,功能类似,参数类型不同的函数。

需要注意的是。当调用重载函数时,编译器会根据实参的类型推断出要调用的是哪一个函数。

void print(const int *b, const int *e){...}
void print(const int ia[], size_t size){...}
void print(const char *cp){...}

int arr[5] = {1, 2, 3, 4, 5};
print("Hello!");
			//调用print(const char *)
print(arr, 5);
			//调用print(const int*, size_t)
print(begin(arr), end(arr));
			//调用print(const int*, const int*)

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值