游戏开发 c++基础学习 笔记摘要第11天

函数
c语言(面向对象)实现某个功能
函数定义: 返回值类型 函数名(形参表)
{
函数体;
}
函数调用:函数名(参数表:实参表)
实参表:必须和形参表类型,个数,顺序一样
实参:可以是常量,变量以及表达式
函数调用过程
1.给形参分配临时内存,把实参的值传给形参
2.进入被调函数的函数体,按照语法规则依次执行
3.如果函数有返回值通过return把返回值带回主调函数,同时形参(栈区)内存回收
函数调用的使用
1.函数调用作为一条独立的语句
2.函数调用作为表达式的一部分(函数表达式),该函数必须有返回值
3.函数调用作为另外一个函数的实参,该函数必须有返回值

**

指针和数组

**
在大多数表达式中,使用数组类型的对象其实是使用一个指向该数组首元素的指针

string nums[]={"one","two","three"};
string *p=&nums[0];//p指向nums的第一个元素
string *p2=nums;//等价于p2=&nums[0]

使用auto变量的初始值时,推断得到的类型是指针,而非数组`

int a[]={0,1,2}
auto ia2(a);//ia2是一个整型指针,指向a的第一个元素
ia2=42//错误,ia2是一个指针,不能用int值给指针赋值

指针也是迭代器
允许使用递增运算符将指向数组元素的指针向前移动到下一个位置

int a[]={0,1,2,3}
int *p=a;//p指向a的第一个元素
++p;//p指向a[1]

指针遍历数组中元素

int arr[]={0,1,2,3,4,5,6,7,8,9}
int *e=&arr[10];//定义一个指针e指向arr尾元素的下一个位置的指针
for(int *b=arr;b!=e;++b)
cout<<*b<<endl;//输出arr的元素

标准库函数begin和end

int *a=begin(arr);//指向arr首元素的指针
int *b=end(arr);//指向arr尾元素的下一位置的指针

两个函数定义在interator中
尾后指针不能执行解引用和递增操

给一个指针加上某整数值,结果仍然是指针

int arr[]={1,2,3,4,5}
int *pi=arr;
int *pi2=ip+4;//ip2指向a[4]
int *p =arr+5;//p指向arr尾元素的下一个位置,使用警告:不要解引用
int *p=arr+10;//错误 arr只有5个元素,p2的值未被定义

下标和指针
对数组执行下标运算其实是对指向数组元素的指针执行下标运算

int i=ia[2];//ia转换成指向数组首元素指针,ia[2]得到(ia+2)所指的元素
int *p=ia;//p指向ia的首元素
i=*(p+2);//等价于i=ia[2]

只要指针指向的是数组中的元素(或尾元素的下一个位置),都可以执行下标运算

int *p=&ia[2];//p指向索引为2的元素
int j=p[1];//p[1]等价于*(p+1),即ia[3]表示元素
int k=p[-2];//p[-2]即为ia[0]表示的元素

指针和多维数组
当使用多维数组的名字时,也会自动将其转换成数组首元素指针

int ia[3][4];
int(*p)[4]=ia;//p指向含有4个整数的数组
p=&ia[2];//p指向ia的尾元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值