1.使用char*const p是不是只能定义一个字符,而不能定义字符串,因为我在实验的时候发现如果定义一个字符串,printf("%s\n",p);显示不出来,而且我发现如果把%s改成%c也无法显示,但是既然定义的是字符,不应该%c才能显示吗?怎么倒过来了
printf用%c后面匹配的应该是char类型,并输出这个字符;printf用%s后面匹配的应该是指向字符串第一个字符的字符型指针,并输入整个字符串(从首字符到‘\0’)
首先p是一个指向字符的指针,它是一个指针类型,而不是一个char类型,所以用%c是肯定不对的。
另外用%s是可以输出的,显示不出来具体是指什么?这里const使p指向的地址不能改变,会不会是因为没有初始化?
显然是个字符串的定义,不晓得你p是怎么赋值的,我可以显示出来
char* const p = {"Hello,World!"};
printf("%s\n",p);
Hello,World!可以显示出来
另,如果把%s换成%c显示出来是一个空行
如果要显示字符的话应该是printf("%c\n",*p);才对吧。
输出的话应该是*p呀。并且const修饰的是p,所以说这个地址是不能被修改。