负数零 发表于 2021-10-24 09:24:26

数组指针疑问

这两种代码输出结果相同,但为什么这个数组可以变为二维数组呢,指针指向数组可以随便定义它的数组类型吗?还有为什么我将其中的d改为s,或者s改为d结果就输出错误了呢?同为指向数组指针的指针,为什么一边打印用的%s,一边打印用的%c

傻眼貓咪 发表于 2021-10-24 09:31:43

字符串其实就是由多个字符组成:#include <stdio.h>

int main()
{
    char a = {'b', 'a', 'n', 'a', 'n', 'a'};
    char *b = "banana";
   
    printf("%s\n", a);
    printf("%s\n", b);

    return 0;
}banana
banana

大马强 发表于 2021-10-24 09:37:02

前者是嵌套循环,外循环是一句话,相当于一个一维数组,而内循环就是在这个一维数组里面遍历每一个字符所以%c
后者是一个单循环,每次循环元素为一句话,所以有%s
https://fishc.com.cn/forum.php?mod=viewthread&tid=203791

桃花飞舞 发表于 2021-10-24 11:33:08

本帖最后由 桃花飞舞 于 2021-10-24 11:40 编辑

这两种代码输出结果相同,但为什么这个数组可以变为二维数组呢,指针指向数组可以随便定义它的数组类型吗?还有为什么我将其中的d改为s,或者s改为d结果就输出错误了呢?同为指向数组指针的指针,为什么一边打印用的%s,一边打印用的%c
char *array 这是一个指针数组,至于为什么变成二维数组其中一个原因是指针数组char *array中的每一个元素比如FishC是一个字符串,字符串也可当做一维char数组只不过数组最后一个元素是'\0'。指针指向数组可以随便定义它的类型,但是这里定义的是char类型的你也可以定义为int型的,不明白你的d和s是指什么,通过对比两个的代码用%c的显然是遍历了二维数组(*p)中的每一个元素,而%s的自然就是只遍历了一维数组的array也就是(*p)中的5个元素。
页: [1]
查看完整版本: 数组指针疑问