数组指针疑问
这两种代码输出结果相同,但为什么这个数组可以变为二维数组呢,指针指向数组可以随便定义它的数组类型吗?还有为什么我将其中的d改为s,或者s改为d结果就输出错误了呢?同为指向数组指针的指针,为什么一边打印用的%s,一边打印用的%c 字符串其实就是由多个字符组成:#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 前者是嵌套循环,外循环是一句话,相当于一个一维数组,而内循环就是在这个一维数组里面遍历每一个字符所以%c
后者是一个单循环,每次循环元素为一句话,所以有%s
https://fishc.com.cn/forum.php?mod=viewthread&tid=203791 本帖最后由 桃花飞舞 于 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]