美文网首页
[C指针]指针与数组:int vector[5]; int *p

[C指针]指针与数组:int vector[5]; int *p

作者: AkuRinbu | 来源:发表于2019-04-13 15:52 被阅读0次

学习笔记

《深入理解C指针》
http://www.ituring.com.cn/book/1147
第4章 指针与数组

1、指针概述

一维数组、二维数组

二维数组

如果只用一个下标访问二维数组,得到的是对应行的指针
数组很特殊,&matrix[i]matrix[i]都是取出指针里面存的内容

访问数组

2、指针表示法与数组

指针表示法与数组

数组和指针的差别

(1)vector[i] 与 *(vector+i) 生成机器码不同

  • 假设这里,我想取出vector[2] = 3
  • 反汇编
mov DWORD PTR [rbp-32], 1
    mov DWORD PTR [rbp-28], 2
    mov DWORD PTR [rbp-24], 3
    mov DWORD PTR [rbp-20], 4
    mov DWORD PTR [rbp-16], 5
  • vector[i],从vector处开始,移动i个位置,取出内容
mov edx, DWORD PTR [rbp-24]
  • *(vector+i),从vector地址开始,给这个地址加上i,从新地址里取出内容
lea rax, [rbp-32]
add rax, 8

(2)sizeof(pv)与 sizeof(vector)

Visual studio 2019
GNU GCC v7.1.1)
  • sizeof(vector)数组的字节数
  • sizeof(pv)指针的长度,机器不同,编译器不同,指针长度可能不同

(3) 数组名vector 不是左值,不可被修改

3、用malloc创建一维数组

用malloc创建一维数组
  • 分配一块内存并把它当成数组,其长度在运行时确定

相关文章

  • [C指针]指针与数组:int vector[5]; int *p

    学习笔记 《深入理解C指针》http://www.ituring.com.cn/book/1147第4章 指针与数...

  • 10月18日

    今天老师重新强调了数组指针与指针数组. int a[5][4]; int *p[4]=a;或者 int *p[4]...

  • 指针2

    指针三要素1正在自身类型, 指针指向的类型 ,指针指向的地址 数组指针 int(*p)[5] 指针数组 int ...

  • 指针数组和数组指针

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

  • 数组指针

    数组指针:本质是指针,指向一个数组 int *px[ 5 ]; // 指针数组 int (*px)[ 5 ]...

  • C语言 指针和数组的关系

    1>指针数组:代表数组里面所有的元素都是指针变量 例如:int a=9,b=8,c=7;int *p[3]={&a...

  • 3-2

    1.指向一个基本类型变量(int)的指针int p;2.指向一个int型数组的指针,int a[5];int (p...

  • 数组知识点

    数组指针与指针数组: int(*p)[4]; --定义数组指针p,指向含4个元素的一维整型数组的指针变量(是指针)...

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • 关于指针数组和指向数组的指针

    关于int *p[SIZE] 和 int (*p)[SIZE]的问题,也就是 指针数组 和 指向数组的指针 的问...

网友评论

      本文标题:[C指针]指针与数组:int vector[5]; int *p

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