关于输出字符串的问题
char * p = "Hello";
等价于以下代码:
char * p;
char string[] = "Hello";
p = string;
如查要输出字符串的内容,有两种方式:
1、按每个字符输出
#include<stdio.h>
int main(void)
{
char *p="hello";
while(*p!='\0')
printf("%c",*p++);
system("pause");//用于程序编译成exe后,运行exe时暂停dos窗口。
}
2、以字符串形式直接输出
#include<stdio.h>
void main()
{
char *p="hello";
printf("%s",p);//指针指向的是字符串"Hello"的首地址,系统会自动移动字符串指针,直到遇上'\0',这就是字符串可以以printf("%s",p);输出的原因
system("pause");
}
问题:::【这里printf("%s",p)等价于 while (*p!=\0) printf("%c", *p++)这是c本身规定的吗?为什么pintf("%s", *p);输出不了呢?是因为无法确定p所指向的空间长度的问题吗?】