#include<stdio.h>
char*display();
int main() {
char*one=NULL;
one=display();
one[3]='9';
printf("%s",one);//doubt(why we are not using the de reference operator)
}
char*display(){
static char a[30]="hello";
return a;
}
为什么我们不使用取消引用操作符(*)来显示字符串的值,而是简单地放置指向字符串的指针变量来打印该字符串。
1条答案
按热度按时间06odsfpq1#
为什么我们不使用取消引用操作符(*)来显示字符串...的值?
与
printf("%s",one);
中的"%s"
匹配的参数是 * pointer *,它是指向 * string * 的指针。字符串更像是字符数组而不是指针。函数不能接收数组,但可以接收指向数组的指针。printf("%s...
需要一个字符串指针,读取该指针所指向的字符,打印该字符,递增指针副本,并重复此过程,直到读取到一个 * 空字符 *。如果代码使用
*one
,则将传递字符串第一个字符的值,printf()
将缺少有关字符串中后续字符位置的信息。注:
char *display()
返回 * 指针 *,而不是 * 字符串 *。one
在main()
中,然后指向 * 字符串 *。数组不是指针。
指针不是数组。