• 第八章 数组


    1.数组名是一个指针常量,类型由数组元素的类型决定只有在两种场合下,数组名并不用指针常量来表示------就是当数组名作为sizeof操作符或单目操作符&的操作数时。前者:返回整个数组的长度,后者:  取一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向指向某个指针常量值的指针。

    const(*号)左边放,我是指针变量指向常量;(常量指针)

    const(*号)右边放,我是指针常量指向变量;

    const(*号)两边放,我是指针常量指向常量;

    指针变量能改指向,指针常量不能转向。

    2.

    3.

    int a[10];
    int *p=a+2;

    *p相当于a[3]则p[-1]表示p[2](3-1)

      2[a]相当于*(2+a)也就是a[2]

    4.

    int a[5];
    int  *b;

    表达式*a合法,但*b不合法因为*b将访问内存中某个不确定的值,或者导致程序终止。b++可以通过编译,a++不能,因为a的值是一个常量。

    5.改变传入的指针,原数组不会影响(例如对传入指针,相当于数组范围变小),但对下标进行操作,原数会改变。函数实际传递的是数组的第一个元素的指针。

    6.自动变量位于运行时堆栈中,执行流每次进入它们所在的代码块时,这类变量每次所处内存位置可能不相同。

    7.自动计算数组长度。

    8.在C中,多维数组的元素储存顺序按照最右的下标率先变化的原则,称为行主序。

    9.

    int matrix[6][10]

    解释为6行10列还是10行6列都可以,只要你每次都坚持用同一种方法。

    matrix这个名字的值是一个指向它第一个元素的指针,所以matrix是一个指向一个包含10个整型元素的数组指针。matrix[0][0]~[0][9]

    对于二维数组,可以看成两个待存储确定项。matrix[3][10]:*(matrix+1)+2对[3]的位置进行操作,此时为一个指针,再向右偏移2个位置,指向matrix[1][2]。而*(*(matrix+1)+2)就是matrix[1][2]。

    10.matrix[4,3]相当于matrix[3]。

    11.

    int vector[10],*vp=vector;
    int matrix[3][10],*mp=matrix;

    第一个正确,都为指针。

    第二个错误,此时matrix为数组了,要想声明就要int (*p)(10)=matrix;此时,p指向matrix的第一行,拥有10个整型元素的数组的指针。

    12.

    花括号:1.路标的作用,更容易找到正确的位置。

             2.如果使用花括号,每个子初始列表都可以省略尾部几个初始值,同时,每一维的初始列表各自都是一个初始化列表。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 int main(void)
     5 {
     6     int a[2][2][3][5]={
     7     {
     8         {
     9             {},{5}
    10         },
    11         {
    12             {0}
    13         }
    14     },
    15     {}
    16 }; 
    17 printf("%d
    ",a[0][0][1][0]);
    18 system("PAUSE");
    19 return 0;
    20 }

    运行结果:5

    13.当我们声明一个数组时,它同时也分配了一些内存空间,用于容纳数组元素。但是,当我们声明一个指针时,它只分配用于容纳这个指针本身的空间。

    14.只要有可能,函数的指针形参都应该声明为const。

  • 相关阅读:
    kafka常见问题汇总
    kafka可视化工具kafkatool
    VB.NET DevExpress GirdView 搜素框界面Find Clear按钮转换为自定义中文
    winform DevExpress GridView复制单元格方法
    DevExPress GridView获取单元格坐标和内容
    Winform Log4Net使用(一)(产生yyyyMMdd'.log)便于每天使用记录一眼能看出哪天使用时出错
    winform 判断重复检测,是否开启相同应用程序 和 线程异常捕获
    winfrom Run状态控件刷新办法
    C# winform Panel自定义移动窗口
    C# 控制台CMD辅助类
  • 原文地址:https://www.cnblogs.com/Mayfly-nymph/p/8362355.html
Copyright © 2020-2023  润新知