• C++学习第二十三天----函数


    1.使用数组区间的函数

            前面对于处理数组的方法是:传递多个参数,第一个是指向数组起始处的指针,第二个是数组长度

            这种是指定元素区间,传递两个指针,一个指向数组的开头,一个指向数组的尾部。

            可以了解下c++标准模板库STL所提到的超尾的概念。

    double eat[20];

            数组名eat指向数组的第一个元素,就是所说的头部;

            eat+19指向数组的最后一个元素,eat+20指向数组的尾部了;

    2.指针和const

            第一,指针指向一个常量对象,这样可以防止使用该指针修改所指向的值;

            第二,指针本身是常量,这样可以防止改变指针指向的位置。

            c++禁止将const的地址赋给非const指针,如下,这是错误的;为什么呢?因为定义的变量是一个常量,而定义的指针却可以去修改这个常量的值,很现实是矛盾的。

    1. const float h_moon = 1.63;
    2. float *pm = &h_moon;

    所以可以这么记:const的比非const的更高级。

    将指针参数声明为指向常量数据的指针的理由:

            1.可以避免由于无意间修改数据而导致的指针错误;

            2.使用const使得函数能够处理const和非const实参,否则只能接受非const数据。

    所以加上const没毛病。

    3.函数和二维数组

    看下面两种sum()函数原型,都是可以的。

    1. int data[3][4] = {{1,2,3,4}, {5,6,7,8}, {3,4,6,7}}
    2. int toal = sum(data,3);
    3. int sum(int (*ar2)[4],int size);//原型1
    4. int sum(int ar2[][4], int size);//原型2
    ar2[r][c] == *(*(ar2 +r) + c)

     可以自己琢磨一下上面这行代码;

    说明:ar2就代表此二维数组的首地址,r代表的是行,所以它包含了这一行的所有元素,并不是单单的一个元素,所以+r代表的偏移量是二维数组列的长度,比如上面的4,然后*--取出偏移后的这一行的所有元素,再+c就是所需要的元素地址了,然后解地址*就是所需要的元素了。

    4.将c-风格字符串作为参数的函数

    将字符串作为参数传递给函数,有三种表示方式,都是char指针,char*类型。

    1. 1.char数组;
    2. 2.用引号括起来的字符串常量(也称字符串字面值);
    3. 3.被设置为字符串的地址的char指针;
    4. char ghose[15] = "goodmoring";
    5. char *str = "goodmoring";
    6. int n1 = strlen(ghose);
    7. int n2 = strlen(str);
    8. int n3 = strlen("goodmoring");

    程序清单7.9; · 96cb0b2 · Kite/C和C++ - Gitee.com

    说个重要的概念,不以空字符结尾的数组也只是普通的数组,而不是字符串,字符串有内置的结束字符。

    这里不明白的话,就需要自己去加深一下对字符数组和字符串数组的理解了。可以看下下面这篇文章。

    C语言字符数组的初始化_c语言 字符数组初始化_wangrunmin的博客-CSDN博客

  • 相关阅读:
    凌特杯,第二届,数字音频传输。simulink matlab
    锐捷——静态路由基础配置
    BPA仿真软件需要购买吗,BPA电力仿真软件教程
    【JS缓存技术】-本地存储
    金蝶云苍穹-插件开发(四)GPT开发相关插件
    POJ 3109 Inner Vertices 离散化+树状数组
    轮播图的两种方法
    ES6中的默认参数
    Java:get请求下字符串异常问题
    python爬取网站数据笔记分享
  • 原文地址:https://blog.csdn.net/qq_45796666/article/details/132830836