多级指针与数组

多级指针与数组

在这里插入图片描述

多级指针

  • 定义char **p(等于char *a[n]; [n]先开辟n个连续空间相当于一级地址,存的是不连续字符空间的地址,a标签常量是二级地址,存的是数组首地址)
  • ⚪里面存的是二级指针,中间是一级指针
  • p相当于数组名,数组名在c和c++中是地址
  • p[n],p表示一个地址,[n]表示在某个地址下连续n个空间
  • p[n]能一直往下直到p[n]=NULL
  • 多级指针是为了将不同地址的数据连续起来

数组

  • 定义一个数组int a[99]

  • 数组名a是数组首元素的地址,与&a[0]相同,[99]定义连续99个int 空间,空间内存有int数据(一个int 4字节)

  • [ ]是索引操作符

  • 相当于上图中间那列内存里面存int数据(是数据,不是地址),上图最右列内存没有

  • 虽然只定义了99个int空间,但是可以越界

  • 定义数组时赋值,赋值的是空间,只有第一次赋值时可以多个连续,以后只能逐一

    int a[10]={10,20,30};//int a[10]=空间;{}里面的是空间,空间限制块
    
  • char buf[10]={‘a’,‘b’,‘c’};存了3字节

  • char buf[10]={“abc”};这个里面结尾自带\0,存4字节

  • “ ”和{ }都是空间限制块

    char buf[10]={"abc"};//等于char buf[10]="abc";都是4字节
    

区别

  • a是常量符号不能放在 = 左边,p是变量

    char buf[100];
    buf ="hello world";//错误
    
  • 数组空间的初始化与变量的初始化本质不同,空间的初始化往往需要库函数的辅助

  • char buf[10]="abc";//执行完有两个abc,一个是常量abc,一个是变量abc
    char *p="abc";//取常量abc地址
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值