第7章 函数-----C++的编程模块

1.使用数组区间的函数

      传统C/C++方法是将指向数组起始处的指针作为一个参数,将数组长度作为第二个参数。还有另一种方法是指定元素区间,这可以通过传递两个指针来完成:一个指针标识数组的开头,另一个指针标识数组的尾部。

      假设有double elboud[20];则指针elboud和elboud+20定义了区间。表达式elboud+19指向最后一个元素(elboud[19]),因此,elboud+20指向数组结尾后面的一个位置。

       指针cookies+ArSize指向最后一个元素后面的一个位置(数组有ArSize个元素,因此cookies[ArSize-1]是最后一个元素,其地址为cookies+ArSize-1)。因此,区间[cookies,cookies+ArSize]指定的是整个数组。

2.指针和const

关于const int * a 和 int * const a 的区别:

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090928/2.jpg

如果愿意,还可以声明指向const对象的const指针:

stick只能指向trouble,且stick不能用来修改trouble的值。

     为防止函数无意中修改数组的内容,可在声明形参时使用关键字const:void show_array(const double ar[], int n);

     该声明表明,指针ar指向的是常量数据,不能用ar来修改该数据。这并不意味着原始数组必须是常量,而只是意味着不能在show_array()函数中使用ar来修改这些数据。这里的数组元素师基本类型。但如果它们是指针或指向指针的指针,则不能用const。只要有一层间接关系,就可以使用这种技术。

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090928/3.jpg

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090928/1.jpg

3.函数和二维数组

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

      其中的括号是不可少的,因为声明 int *ar2[4]将声明一个由4个指向int的指针组成的数组,而不是由一个指向由4个int组成的数组的指针。在声明ar2时,没有用const,因为这种技术只能用于指向基本类型的指针,而ar2是指向指针的指针。

4.函数和C-风格字符串

假设要将字符串作为参数传递给函数,则表示字符串的方式有3种:

1)char数组;

2)用引号括起的字符串常量(也称字符串字面值);

3)被设置为字符串的地址的char指针。

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090928/4633897408938281250.jpg

处理字符串中字符的标准方式:

5.函数和结构

      按值传递结构有一个缺点。如果结构非常大,则复制结构将增加内存要求,降低运行的速度。所以更倾向于传递结构的地址,然后使用指针来访问结构的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值