找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1121|回复: 12
收起左侧

请教c语言一维指针(字符串)数组和二维字符数组的区别

[复制链接]
ID:879924 发表于 2021-12-6 19:03 | 显示全部楼层 |阅读模式
  1. char arr[][3]={{‘a’,’b’,’\0’},{‘b’,’c’,’\0’}};
  2. char* arr[3]={“ab”,“bc”};
  3. char* arr[3]={{‘a’,’b’,’\0’},{‘b’,’c’,’\0’}};
复制代码
请问这三个初始化的具体区别和不同
回复

使用道具 举报

ID:592807 发表于 2021-12-7 08:32 | 显示全部楼层
1 普通的二维数组,你应该懂
2和3  char arr【3】里面有存放的就是指针也就是存放着3个数组的首地址
回复

使用道具 举报

ID:879924 发表于 2021-12-7 08:39 | 显示全部楼层
您好 请问这三个 用起来一样吗?? 第2个能否访问arr[1][1]
如果是下面三个代码,他们还一样吗???谢谢大佬
  1. char arr[][3]={{‘a’,’\0’,’b’},{‘b’,’c’,’\0’}};
  2. char* arr[3]={“a”,“bc”};
  3. char* arr[3]={{‘a’,’\0’,’b’},{‘b’,’c’,’\0’}};
复制代码
回复

使用道具 举报

ID:879924 发表于 2021-12-7 08:40 | 显示全部楼层
请问大佬,123使用起来一样吗?像2能否访问arr[1][1]???
另外如果是如下代码,他们是否还相同?
  1. char arr[][3]={{‘a’,’\0’,’b’},{‘b’,’c’,’\0’}};
  2. char* arr[3]={“a”,“bc”};
  3. char* arr[3]={{‘a’,’\0’,’b’},{‘b’,’c’,’\0’}};
复制代码
回复

使用道具 举报

ID:879924 发表于 2021-12-7 08:41 | 显示全部楼层
黄youhui 发表于 2021-12-7 08:32
1 普通的二维数组,你应该懂
2和3  char arr【3】里面有存放的就是指针也就是存放着3个数组的首地址

请问大佬,123使用起来一样吗?像2能否访问arr[1][1]???
另外如果是如下代码,他们是否还相同?
  1. char arr[][3]={{‘a’,’\0’,’b’},{‘b’,’c’,’\0’}};
  2. char* arr[3]={“a”,“bc”};
  3. char* arr[3]={{‘a’,’\0’,’b’},{‘b’,’c’,’\0’}};
复制代码
回复

使用道具 举报

ID:879924 发表于 2021-12-7 08:41 | 显示全部楼层
黄youhui 发表于 2021-12-7 08:32
1 普通的二维数组,你应该懂
2和3  char arr【3】里面有存放的就是指针也就是存放着3个数组的首地址

请问大佬,123使用起来一样吗?像2能否访问arr[1][1]???
另外如果是如下代码,他们是否还相同?
  1. char arr[][3]={{‘a’,’\0’,’b’},{‘b’,’c’,’\0’}};
  2. char* arr[3]={“a”,“bc”};
  3. char* arr[3]={{‘a’,’\0’,’b’},{‘b’,’c’,’\0’}};
复制代码
回复

使用道具 举报

ID:908826 发表于 2021-12-7 09:51 | 显示全部楼层
还是找个书系统学一下这里比较好
回复

使用道具 举报

ID:976493 发表于 2021-12-7 10:18 | 显示全部楼层
找个C语言书或者视频教程,讲得很详细的
回复

使用道具 举报

ID:879924 发表于 2021-12-7 16:31 来自手机 | 显示全部楼层
在学这一段,但是书里面没有讲到这些。
回复

使用道具 举报

ID:879924 发表于 2021-12-7 16:31 来自手机 | 显示全部楼层
在写,但是书里没有讲到这些。
回复

使用道具 举报

ID:592807 发表于 2021-12-8 09:08 | 显示全部楼层
macboa 发表于 2021-12-7 08:41
请问大佬,123使用起来一样吗?像2能否访问arr[1][1]???
另外如果是如下代码,他们是否还相同?

不能。编译器不认可,会报错的,编译器没检测到二维数组,你直接调用二维数组是会报错的。
(*)(arr[0] + 1) 。
arr[0]就是你所说的arr[0][0],但是arr是指针型的变量,所以arr[0]是指针你不能直接调用,需要加上*
arr[0] + 1就是指针后移一位,也就是arr[0][1],同样也是指针,所以要加*
回复

使用道具 举报

ID:989756 发表于 2021-12-8 19:44 | 显示全部楼层
1.第一行的二维数组是标准的二维数组初始化,也就是元素逐个存放。
回复

使用道具 举报

ID:839438 发表于 2021-12-9 11:02 | 显示全部楼层
macboa 发表于 2021-12-7 08:41
请问大佬,123使用起来一样吗?像2能否访问arr[1][1]???
另外如果是如下代码,他们是否还相同?

如果使用的相同的代码,会报错,我就是这样被报错了很久,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表