指针数组和二维数组有没有区别?比如这样的两个代码。
int main()
{
char *s1[] = {
"hello",
"world",
"total"
};
char s2[][6] = {
"hello",
"world",
"total"
};
return 0;
}
从后面的初始化方式可以看出,他们好像一样,里面都保存了三个字符串。
想要搞清楚他们的区别,还得看下他们在内存中的排布。
首先是指针数组 s1。
s1 本身是个一维数组,数组有三个元素,每个元素都是个指针。如果是 64 位系统,三个指针就占了 24 个字节。
使用 sizeof 计算 s1 的大小,结果就是 24。
三个指针指向三个字符串,而且这三个字符串存放在只读数据区,不能修改,尝试通过指针 s1[0] 去修改元素 h,程序会异常。
s2 本身是个二维数组,三行六列,每一行都存放一个字符串。使用 sizeof 计算 s2 的大小,结果是 18。
在这个案例中 s2 是个局部变量,于是这三个字符串存放在栈空间,可读可写。通过 s2 可以随意修改。
要说他俩的相同点,就是使用起来基本一样,要想访问字符串里面的元素,完全可以把 s1 当成二维数组,通过下标的形式去访问。
-
指针
+关注
关注
1文章
484浏览量
71677 -
二维
+关注
关注
0文章
41浏览量
12215 -
数组
+关注
关注
1文章
420浏览量
27114
原文标题:指针数组和二维数组
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
二维码扫码模块是什么?它和普通条码识别设备有什么不同
中航光电推出二维FA光纤阵列组件
基于STM32的二维码识别源码+二维码解码库lib
JCMsuite中对二维光栅的定义和仿真
二维码读取器是干嘛的
stm32 DMA串口接收到数组,数组元素顺序错乱怎么解决?
请问LabView中如何直接发送二维数组到DMD上显示?
二维影像扫描引擎可以应用于哪些行业?
二维扫码头有效扫描距离是多少,影响二维扫描头扫码的因素有哪些
RS232接口的二维影像扫描引擎,广泛用在医疗设备上扫一维二维码

指针数组和二维数组有没有区别
评论