关于c语言中返回字符串的问题

pkln4tw6  于 2023-01-16  发布在  其他
关注(0)|答案(1)|浏览(149)
#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; 

}

为什么我们不使用取消引用操作符(*)来显示字符串的值,而是简单地放置指向字符串的指针变量来打印该字符串。

06odsfpq

06odsfpq1#

为什么我们不使用取消引用操作符(*)来显示字符串...的值?
printf("%s",one);中的"%s"匹配的参数是 * pointer *,它是指向 * string * 的指针。字符串更像是字符数组而不是指针。函数不能接收数组,但可以接收指向数组的指针。
printf("%s...需要一个字符串指针,读取该指针所指向的字符,打印该字符,递增指针副本,并重复此过程,直到读取到一个 * 空字符 *。
如果代码使用*one,则将传递字符串第一个字符的值,printf()将缺少有关字符串中后续字符位置的信息。
注:
char *display()返回 * 指针 *,而不是 * 字符串 *。onemain()中,然后指向 * 字符串 *。
数组不是指针。
指针不是数组。

相关问题