黑马程序员技术交流社区

标题: 关于指针与结构体的问题 [打印本页]

作者: lixp    时间: 2015-10-30 17:57
标题: 关于指针与结构体的问题
#include<stdio.h>
int main(int argc,char *argv[]){
        //1.定义一个结构体
        struct student{
                char name[50];
                int score;
        } ;//封号一定不能忘
        //2.定义一个结构体变量,并且初始化
        struct student stu={"lixp",98};
        //3.定义一个指针变量,指向初始化的结构体
        struct student *ptr=&stu;
        printf("*ptr->name++=%c\n",*ptr->name++);//本来应该是这样用的,得到的应该是i字符,但是这样子编译的时候会报错 各位大神看一下咋回事啊
                return 0;
}
作者: heiHorse    时间: 2015-10-30 18:24
加油,海马
作者: YeGuangjin    时间: 2015-10-31 18:23
#include <stdio.h>

int main(int argc,char *argv[]){
    //1.定义一个结构体
    struct student{
        char name[50];
        int score;
    } ;//封号一定不能忘
    //2.定义一个结构体变量,并且初始化
    struct student stu={"lixp",98};
    //3.定义一个指针变量,指向初始化的结构体
    struct student *ptr=&stu;
    char *p = ptr->name;
    printf("*ptr->name=%c\n",*(++p));//本来应该是这样用的,得到的应该是i字符,但是这样子编译的时候会报错 各位大神看一下咋回事啊
    return 0;
}


作者: YeGuangjin    时间: 2015-10-31 18:25
你执行的ptr->name++,一次++ 是50个char的长度
作者: YeGuangjin    时间: 2015-10-31 18:27
另外,++p和p++的区别,你编译一下,就能看到不同的结果
作者: wzf2015    时间: 2015-10-31 18:38
看不懂啊
作者: zyios    时间: 2015-10-31 21:06
现在知道答案了吗
作者: lixp    时间: 2015-11-2 19:50
还是不行。。。
作者: chensc    时间: 2015-11-2 20:00
学习学习!
作者: 谁在放荡    时间: 2015-11-3 01:04
自增运算符此处不能用,p->name是个常量,不能这样运算吧,单是指针p可以,因为它是变量,还有即使++,也应该放在前面,直接加1取*吧
作者: tsc0000    时间: 2015-11-3 10:01
学习学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2