结构体成员指针指向data区或栈区

    技术2024-04-16  95

    struct student { int number; char *name; int score; };

    这里我们定义了一个结构体 第一种方式指向data区

    struct student s; s.number=10; s.score=20; strcpy(s.name,"mike"); printf("%d %s %d\n",s.number,s.name,s.score);

    前面的number和score都没有问题,这里我们将s.name用strcopy函数将文字常量区的“mike”字符串拷贝到s.name所指向的内存中去,因为name本身就是指针,字符串常量就是首元素地址,故而可以这样操作. 第一种方式的不同写法

    struct student s; s.number=10; s.score=20; s.name="mike"; printf("%d %s %d\n",s.number,s.name,s.score); struct student *s; s->number=10; s->score=20; strcpy(s->name,"mike"); printf("%d %s %d\n",s->number,s->name,s->score);

    第二种方式指向栈区

    struct student p; char buf[100]; p.number=10; p.score=1; p.name=buf; printf("%d %s %d",p.number,p.name,p.score);

    这里我们定义了一个字符型的数组,将name指向的栈区的buf 以上有些代码无法在dev通过,可以用gcc编译通过,不是代码有问题!!!

    Processed: 0.009, SQL: 9