美文网首页程序员
C指针(6):数组

C指针(6):数组

作者: miamendax | 来源:发表于2020-05-27 17:12 被阅读0次

数组

1.数组和指针的差别

int vector [5] = {1,2,3,4,5};
int * pv = vector;

差别:

  1. vector[i]表示法生成的机器码从位置vector开始,移动i个位置,取出内容; 而*(vector+i)表示法生成的机器码则是从vector开始,在地址上增加i,然后取出这个地址中的内容
  2. 对vector调用sizeof操作符会返回20,就是这个数组分配的字节数; 对pv调用sizeof操作符会返回4,就是指针的长度
  3. pv是一个左值,左值表示赋值操作符左边的符号。左值必须能修改。像vector这样的数组名字不是左值,它不能被修改

2.动态分配数组

  • 分配可能不连续的内存

    int rows = 2;
    int columns = 5;
    
    int **matrix = (int **) malloc(rows * sizeof(int *));
    
    for (int i = 0; i < rows; i++) {
        matrix[i] = (int *) malloc(columns * sizeof(int));
    }
    
  • 分配连续内存

    //先分配外层数组,再分配各行内存
    int rows = 2;
    int columns = 5;
    
    int **matrix = (int **) malloc(rows * sizeof(int *));
    matrix[0] = (int *) malloc(rows * columns * sizeof(int));
    
    for (int i = 1; i < rows; i++)    
        matrix[i] = matrix[0] + i * columns;
    
    //一次性分配,无法使用索引,比较少使用
    int *matrix = (int *)malloc(rows * columns * sizeof(int));
    

3.不规则数组

//一种声明方法
int (*(arr2[])) = { 
    (int[]) {0, 1, 2, 3},
    (int[]) {4, 5}, 
    (int[]) {6, 7, 8}
};

相关文章

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

  • C指针(6):数组

    数组 1.数组和指针的差别 差别: vector[i]表示法生成的机器码从位置vector开始,移动i个位置,取出...

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

  • 指针数组&数组指针

    本节继续讨论C语言中的指针。 指针数组&数组指针 先理解一下什么是指针数组和数组指针,指针数组的实质是个数组,这个...

  • C语言的指针与数组(进阶篇之一)

    一、一维数组与指针 (1).数组指针在C语言中,数组的首地址称为数组指针。而C++规定,数组的首地址可用数组名a表...

  • 学习笔记3(指针运算,函数参数与指针,数组指针,二级指针)

    一、指针运算 二、数组与指针 三、指针和函数参数 java中: C/C++中: 四、指针数组 五、 二级指针 六、...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

网友评论

    本文标题:C指针(6):数组

    本文链接:https://www.haomeiwen.com/subject/tofgahtx.html