首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求解c中的struct的疑点

2013-03-14 
求解c中的struct的疑问#include stdio.h#include stdlib.hstruct STU{int iint jint k}int main()

求解c中的struct的疑问
#include <stdio.h>
#include <stdlib.h>

struct STU
{
    int i;
    int j;
    int k;
};

int main()
{
    struct STU stu= {1,2,3};
    int *p=&stu.j;

    printf("%d,%d,%d,%d\n",p,p[-1],p[0],p[1]);
    return 0;
}
的结果为什么是:
2293556,1,2,3
[解决办法]
对p要解引用,否则就是打印p的值即stu.j的地址
[解决办法]
printf("%d,%d,%d,%d\n",p,p[-1],p[0],p[1]);
[解决办法]
printf("%d,%d,%d,%d\n",*p,p[-1],p[0],p[1]);
[解决办法]
p为指针,保存的是stu.j的地址,直接打印p显示的是地址,*p的值为stu.j的值,建议先看看C语言的基础书籍。
[解决办法]
p打印出来的是stu.j的地址值,p[-1]其实是*(p-1)即i的值,p[1]的情况相同
[解决办法]
的确 printf  *p
才是输出stu.j的值

热点排行