char、char*、char**数组
平时都用的是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**数组相关推荐
- [转]char * 和字符数组
[转]char * 和字符数组 原文地址:http://www.cnblogs.com/jeakon/archive/2012/05/27/2816809.html 代码中的int * i就是我们关注 ...
- char 类型的数组,在函数内能最大能定义多大?
因为进程的虚拟的地址空间是具体划分的,栈的大小是固定的,可以通过 ulimit -a 命令来看. 栈的大小是 8M ,所以 char 类型的数组 不能超过这个大小,否则就会 segment fault ...
- c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别
详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...
- char a[](字符串数组)和char *a(字符串指针)区别
在C语言中,对字符串的操作主要有两种方式,一是使用字符数组,char str[]:二是使用字符指针.那么二者有什么区别呢?下面将分述二者的使用,最后进行比较. 一.字符数组 使用char str[]定 ...
- char [] 和 char * 区别
只要记住一点就能很好区分char *和char []:char *定义的是一个指向字符串的指针(注意:C语言中没有对应字符串的内置类型或者类类型),而char []就是C语言中的用来定义字符数组(注意 ...
- c语言中 char怎样用,C语言中char*和char[]用法区别分析
C语言中char*和char[]用法区别分析 本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很 ...
- 如何将std :: string转换为const char *或char *?
如何将<code>std::string转换为char*或const char* ? #1楼 看看这个: string str1("stackoverflow"); c ...
- char[],char *,string之间转换
char []与char *之间转换 char []转char *:直接进行赋值即可 // char[] 转char * char str[] = "lala"; char *st ...
- 【转】关于char * 与 char[]
问题引入: 在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内 容程序是会崩溃的,而后者完 ...
- char* 和char[] 内存分配的区别(转载)
[cpp] view plaincopy char * s1 = "abcd"; s1[0] = 'm';//segment fault 上面代码在gcc下编译运行将报段错误. 然 ...
最新文章
- HDOJ2270(How Many Friends Will Be Together With You)
- Jetty 基本使用样例
- oss One or more of the specified parts could not be found or the specified entity tag
- 【组合数学】组合恒等式 ( 变上项求和 1 组合恒等式 | 三种组合恒等式证明方法总结 | 证明变上项求和 1 组合恒等式 )
- 关闭 启动_离心泵启动时为什么要关闭阀门?
- BCrypt管理员登录密码验证
- db2 导出换行_数据库 db2 换行符
- 电脑遇到脱机状态怎么解除?
- Android6.0之前版本(AwesomePlayer)OMXCodec执行流程细节
- Linux下idea 配置Android SDK
- yum文件,来自网络
- phpstudy配置域名后apache无法启动
- 非标机械设计该怎么做,老机械工程师告诉你
- 技术人员的等级划分和资质要求
- OpenNLP 自然语言处理工具
- 音视频基础 、IPB帧及其特点
- 第十一次作业 - Alpha 事后诸葛亮(团队)
- 英语学习之沪江整理 20141101
- 搭建DNF台服之服务器篇
- 【可达编程】最高的分数
热门文章
- 惠州学院计算机学院2019,2019惠州学院专业排名
- 惠州周边适合公司团建的农家乐
- 正常人肺动脉内皮细胞 Pulmonary artery endothelial cells
- ChatGPT 大智近妖,从宇宙人生到手搓光刻机,从哄女友到写年终总结我们聊得非常开心,反而让人越来越忧心
- 前端程序员辞掉朝九晚五工作成为独立开发者一年开发出6款软件的故事
- 长安逸动系统升级服务器连接失败,15逸动系统救砖、升级教程
- 圆周率近似计算公式--python实现
- 自己做的创新创业项目管理系统spring mvc+mysql+mybatics毕业设计
- 消除冗长Java代码的工具——Lombok详解
- 温莎大师财富对接热线:tcdney温莎大师引领区块链时代方向标