c++学习日记(二)

一.函数与数组
(1)函数中传递的参数若为数组,则函数头可以
int sum(int* a,b);int sum(int a[],b);
不要试图在参数方括号内带着常量。

(2)数组名其实是地址,用int指针表示也可,传递的是数组的地址和元素,所以相当于使用原来的数组,但传递变量的时候,相当于使用副本
所以在函数内不修改数组则使用int sum(const int a[],b)
否则int sum(int a[],b)
注意 指针与数组以下关系需要熟记
arr[i]=*(ar+i)
&arr[i]=ar+i;
(3)可传递两个指针来控制数组区间。
int sum(int * start,int* b)

二.const 与指针
(1)指针与const的两种用法

int age=10;
const int *a=&age;

int age=10;
int* const a=&age;

仅当只有一层间接关系时:如指针指向基本数据类型,函数调用中也要满足这个条件
(2)可将const量赋给const指针,但不可将const常量赋给一般指针(易思考知道)

二.函数与二维数组

int data[3][4];

有3个指向数组的指针, 每个指针指向一个数组, 每个数组包含 4 个int 元素。
假如此时有一个sum 函数, 作用是计算这个二维数组的和

那么调用sum函数时, 代码应为 sum( data , int size);

那么 sum函数的原型是什么呢:

原型如下: (原型即函数的定义)

int sum(int (*ar2)[4] , int size );

不能用int *ar2[4]; 因为此时意为建立一个数组存放4个指向int类型的指针。而函数想要的是n个含有四个元素的数组,n=size;
为了更加便于理解, 可以将int sum(int (*ar2)[4] , int size ); 改写为

int sum(int ar2[][4] , int size );

这样写的可读性更强. 可以轻松的理解为, 这是一个二维数组, 只是行数没有指定, 值为空, 数组名为ar2, 而数组的实际长度, 需要由size 指定.
注意:ar2是指针

三.字符串与函数
(1)返回c-风格的字符串,函数无法返回字符串,但可以返回c-风格字符串的地址(指针)。
将指针指向下一个内存块的时候,记住要delete释放。

四.函数与结构
(1)传递与返回结构:
1.按值传递(结构较小)函数定义时

travel_time(travel_time t1,travel_time t2);

传递结构,从而函数内部可用句点运算符调用结构中的变量。(传递的是副本)

double atan2(double y, double x) //返回方位角的一个函数atan2。

2.传递结构的地址
*注意:结构内的成员应用->来或者(a).来访问。
传递值给函数传递的是副本,传递指针修改的是原始数据

五.函数与string
(1)创建一个string数组,传递给函数时void display(const string sa[],int n)

六.函数指针(在函数的参数中若要调用另一个函数时用)

void men(int x,double (*ps)int );

调用了一个返回值为double,参数类型为int 的指针

(1)函数名本身就是地址名
(2)声明函数指针

double num(int);
double (*ps)int;
ps=num;

只需要改写原型即可,将函数名改为ps,ps即为指向该函数的指针**
(3)调用函数指针时只需要把
ps看成函数名即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值