求解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的值