平时都用的是char数组,基本忘记了char*数组和char**数组该怎么用了
char s1[10];
s1[0] s1[1]等都是char
s1是char*,等同于&s1[0]
 
char*s2[10];
s2[0] s2[1]等都是char*
*s2[0] *s2[1]等都是char,是s2[0] s2[1]指向的字符串的第一个字符
s2是char**,等同于&s2[0]
 
char**s3[10];
s3[0] s3[1]等都是char**
*s3[0] *s3[1]等都是char*,是s3[0],s3[1]这些char**指针指向的那个char*指针
**s3[0] **s3[1]等都是char,是*s3[0] *s3[1]这些char*指针指向的字符串的第一个字符
s3是char***,等同于&s3[0]
char s1[3];
         char*s2[3];
         char**s3[3];
         s1[0]='1';
         s1[1]='2';
         s1[2]='3';
         s2[0]=&s1[0];
         s2[1]=s1;
         s3[0]=&s2[0];
         s3[1]=s2;

内存中的数据如下图

明确这一点:指针的值就是它所指向的那个地址,对指针做*运算,就是把指针所指向的那个地址的值取出来
 
s1[0] s1[1] s1[2]存放的是字符
s1这个char*指针的值是0x0012ff60,说明s1这个char*指针指向的地址是0x0012ff60, 这个地址处存放着s1[0]这个字符。
 
s2[0]是一个char*指针,指向字符串”1234”
*s2[0]是第一个字符 ‘1’
s2这个char**指针的值是0x0012ff4c,说明s2这个char**指针指向的地址是0x0012ff4c,这个地址处存放着一个char*指针,也就是s2[0]。
s2[0]这个char*指针的值是0x0012ff60,和s1这个char*指针的值相同,说明s2[0]这个char*指针指向的地址也是0x0012ff60,这个地址存放着s1[0]这个字符。
         s2[0]=&s1[0];
         s2[1]=s1;
         因为s1等同于&s1[0],所以s2[1]这个char*指针的值也是0x0012ff60。
 
 
         s3这个char***指针的值是0x0012ff38,说明s3这个char***指针指向的地址是0x0012ff38,这个地址处存放着一个char**指针,也就是s3[0]。
         s3[0]这个char**指针的值是0x0012ff4c,和s2这个char**指针的值相同,说明s3[0]这个char**指针指向的地址也是0x0012ff4c,这个地址存放着s2[0]这个char*指针
s3[0]=&s2[0];
         s3[1]=s2;
         因为s2等同于&s2[0],所以s3[1]这个char**指针的值也是0x0012ff4c
 
     下面是一张简单的示意图

char、char*、char**数组相关推荐

  1. [转]char * 和字符数组

    [转]char * 和字符数组 原文地址:http://www.cnblogs.com/jeakon/archive/2012/05/27/2816809.html 代码中的int * i就是我们关注 ...

  2. char 类型的数组,在函数内能最大能定义多大?

    因为进程的虚拟的地址空间是具体划分的,栈的大小是固定的,可以通过 ulimit -a 命令来看. 栈的大小是 8M ,所以 char 类型的数组 不能超过这个大小,否则就会 segment fault ...

  3. c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别

    详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...

  4. char a[](字符串数组)和char *a(字符串指针)区别

    在C语言中,对字符串的操作主要有两种方式,一是使用字符数组,char str[]:二是使用字符指针.那么二者有什么区别呢?下面将分述二者的使用,最后进行比较. 一.字符数组 使用char str[]定 ...

  5. char [] 和 char * 区别

    只要记住一点就能很好区分char *和char []:char *定义的是一个指向字符串的指针(注意:C语言中没有对应字符串的内置类型或者类类型),而char []就是C语言中的用来定义字符数组(注意 ...

  6. c语言中 char怎样用,C语言中char*和char[]用法区别分析

    C语言中char*和char[]用法区别分析 本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很 ...

  7. 如何将std :: string转换为const char *或char *?

    如何将<code>std::string转换为char*或const char* ? #1楼 看看这个: string str1("stackoverflow"); c ...

  8. char[],char *,string之间转换

    char []与char *之间转换 char []转char *:直接进行赋值即可 // char[] 转char * char str[] = "lala"; char *st ...

  9. 【转】关于char * 与 char[]

    问题引入: 在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内 容程序是会崩溃的,而后者完 ...

  10. char* 和char[] 内存分配的区别(转载)

    [cpp] view plaincopy char * s1 = "abcd"; s1[0] = 'm';//segment fault 上面代码在gcc下编译运行将报段错误. 然 ...

最新文章

  1. HDOJ2270(How Many Friends Will Be Together With You)
  2. Jetty 基本使用样例
  3. oss One or more of the specified parts could not be found or the specified entity tag
  4. 【组合数学】组合恒等式 ( 变上项求和 1 组合恒等式 | 三种组合恒等式证明方法总结 | 证明变上项求和 1 组合恒等式 )
  5. 关闭 启动_离心泵启动时为什么要关闭阀门?
  6. BCrypt管理员登录密码验证
  7. db2 导出换行_数据库 db2 换行符
  8. 电脑遇到脱机状态怎么解除?
  9. Android6.0之前版本(AwesomePlayer)OMXCodec执行流程细节
  10. Linux下idea 配置Android SDK
  11. yum文件,来自网络
  12. phpstudy配置域名后apache无法启动
  13. 非标机械设计该怎么做,老机械工程师告诉你
  14. 技术人员的等级划分和资质要求
  15. OpenNLP 自然语言处理工具
  16. 音视频基础 、IPB帧及其特点
  17. 第十一次作业 - Alpha 事后诸葛亮(团队)
  18. 英语学习之沪江整理 20141101
  19. 搭建DNF台服之服务器篇
  20. 【可达编程】最高的分数

热门文章

  1. 惠州学院计算机学院2019,2019惠州学院专业排名
  2. 惠州周边适合公司团建的农家乐
  3. 正常人肺动脉内皮细胞 Pulmonary artery endothelial cells
  4. ChatGPT 大智近妖,从宇宙人生到手搓光刻机,从哄女友到写年终总结我们聊得非常开心,反而让人越来越忧心
  5. 前端程序员辞掉朝九晚五工作成为独立开发者一年开发出6款软件的故事
  6. 长安逸动系统升级服务器连接失败,15逸动系统救砖、升级教程
  7. 圆周率近似计算公式--python实现
  8. 自己做的创新创业项目管理系统spring mvc+mysql+mybatics毕业设计
  9. 消除冗长Java代码的工具——Lombok详解
  10. 温莎大师财富对接热线:tcdney温莎大师引领区块链时代方向标