鱼C论坛

 找回密码
 立即注册
查看: 1052|回复: 3

[已解决]数组指针疑问

[复制链接]
发表于 2021-10-24 09:24:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这两种代码输出结果相同,但为什么这个数组可以变为二维数组呢,指针指向数组可以随便定义它的数组类型吗?还有为什么我将其中的d改为s,或者s改为d结果就输出错误了呢?同为指向数组指针的指针,为什么一边打印用的%s,一边打印用的%c
最佳答案
2021-10-24 11:33:08
本帖最后由 桃花飞舞 于 2021-10-24 11:40 编辑

这两种代码输出结果相同,但为什么这个数组可以变为二维数组呢,指针指向数组可以随便定义它的数组类型吗?还有为什么我将其中的d改为s,或者s改为d结果就输出错误了呢?同为指向数组指针的指针,为什么一边打印用的%s,一边打印用的%c
char *array[5] 这是一个指针数组,至于为什么变成二维数组其中一个原因是指针数组char *array[5]中的每一个元素比如FishC是一个字符串,字符串也可当做一维char数组只不过数组最后一个元素是'\0'。指针指向数组可以随便定义它的类型,但是这里定义的是char类型的你也可以定义为int型的,不明白你的d和s是指什么,通过对比两个的代码用%c的显然是遍历了二维数组(*p)[j]中的每一个元素,而%s的自然就是只遍历了一维数组的array[5]也就是(*p)中的5个元素。
Screenshot_2021-10-24-09-17-16-050_com.n0n3m4.droidc.jpg
Screenshot_2021-10-24-09-17-22-044_com.n0n3m4.droidc.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-24 09:31:43 | 显示全部楼层
字符串其实就是由多个字符组成:
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     char a[6] = {'b', 'a', 'n', 'a', 'n', 'a'};
  5.     char *b = "banana";
  6.    
  7.     printf("%s\n", a);
  8.     printf("%s\n", b);

  9.     return 0;
  10. }
复制代码
  1. banana
  2. banana
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-24 09:37:02 | 显示全部楼层
前者是嵌套循环,外循环是一句话,相当于一个一维数组,而内循环就是在这个一维数组里面遍历每一个字符所以%c
后者是一个单循环,每次循环元素为一句话,所以有%s
https://fishc.com.cn/forum.php?mod=viewthread&tid=203791
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-24 11:33:08 | 显示全部楼层    本楼为最佳答案   
本帖最后由 桃花飞舞 于 2021-10-24 11:40 编辑

这两种代码输出结果相同,但为什么这个数组可以变为二维数组呢,指针指向数组可以随便定义它的数组类型吗?还有为什么我将其中的d改为s,或者s改为d结果就输出错误了呢?同为指向数组指针的指针,为什么一边打印用的%s,一边打印用的%c
char *array[5] 这是一个指针数组,至于为什么变成二维数组其中一个原因是指针数组char *array[5]中的每一个元素比如FishC是一个字符串,字符串也可当做一维char数组只不过数组最后一个元素是'\0'。指针指向数组可以随便定义它的类型,但是这里定义的是char类型的你也可以定义为int型的,不明白你的d和s是指什么,通过对比两个的代码用%c的显然是遍历了二维数组(*p)[j]中的每一个元素,而%s的自然就是只遍历了一维数组的array[5]也就是(*p)中的5个元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 12:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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