char p[3][6]={{'a','b','c','\0'},{'d','e','f','\0'},{'g','h','i','\0'}};
char s[3][6]={"abc","def","ghi"};
他们都一样吗?如果不同,请解释它以什么方式以及如何存储在内存中?
它们在记忆中是一样的。在 VS 2010 调试器中,我转换为 char*,以便检查 p 和 s 的前 18 个原始字节:
两种方法中的任何一种都没有区别,请尝试以下代码并查看结果
变量 p 和 s 的结果相同。
#include<stdio.h>
void main()
{
int i,j=0;
char p[3][6]={{'a','b','c','\0'},{'d','e','f','\0'},{'g','h','i','\0'}};
char s[3][6]={"abc","def","ghi"};
for(i=0;i<3;i++)
{
printf("%s",p[i]);
printf("\n");
}
for(i=0;i<3;i++)
{
printf("%s",s[i]);
printf("\n");
}
}
结果如下:
First 2-d string is : abc def ghi
Second 2-d string is :abc def ghi