#include<stdio.h>
#include<malloc.h>
#include<conio.h>
struct STU{
char name[20];
char stuno[10];
int age;
int score;
}stu[50];
typedef struct STU ElemType;
struct LNODE
{
ElemType data;
struct LNODE *next;
};
typedef struct LNODE LNode;
typedef struct LNODE *LinkList;
void PrintStudentInfo(struct STU e)
{
printf("sizeof(e.name):%d/n", sizeof(e.name));
printf("sizeof(&e.name):%d/n/n", sizeof(&e.name));
printf("strlen(e.name):%d/n", strlen(e.name));
printf("strlen(&e.name):%d/n/n", strlen(&e.name));
printf("sizeof(e.age):%d/n", sizeof(e.age));
printf("sizeof(&e.age):%d/n/n", sizeof(&e.age));
printf("sizeof(e.score):%d/n", sizeof(e.score));
printf("sizeof(&e.score):%d/n/n", sizeof(&e.score));
printf("STU e:/t/t");
printf("e.name/t/t");
printf("e.stuno/t/t");
printf("e.age/t/t");
printf("e.score/t/t");
printf("%x/t/t", &e);
printf("%x/t/t", &e.name);
printf("%x/t/t", &e.stuno);
printf("%x/t/t", &e.age);
printf("%x/t/t", &e.score);
printf("-------------------------------------------------------------------/n");
}
main()
{
struct STU yes;
struct STU no;
LinkList L1;
LinkList *pL2;
strcpy(yes.name, "kgdiwss");
strcpy(yes.stuno, "20060607");
yes.age = 23;
yes.score = 100;
printf("未初始化的STU结构:/n");
PrintStudentInfo(no);
printf("初始化的STU结构:/n");
printf("yes.name = %s/n", yes.name);
printf("yes.stuno = %s/n", yes.stuno);
printf("yes.age = %d/n", yes.age);
printf("yes.score = %d/n/n", yes.score);
PrintStudentInfo(yes);
printf("L1/t/t");
printf("*pL2/t/t/n");
printf("%x/t/t", &L1);
printf("%x/t/t/n/n", &pL2);
}
----------------------------------------------------------------------------------------------------------------------
输出结果:
未初始化的STU结构:
sizeof(e.name):20
sizeof(&e.name):4
strlen(e.name):47 /* 为什么没有初始化会是47? */
strlen(&e.name):47
sizeof(e.age):4
sizeof(&e.age):4
sizeof(e.score):4
sizeof(&e.score):4
STU e: e.name e.stuno e.age e.score
12feb4 12feb4 12fec8 12fed4 12fed8
-------------------------------------------------------------------
初始化的STU结构:
yes.name = kgdiwss
yes.stuno = 20060607
yes.age = 23
yes.score = 100
sizeof(e.name):20
sizeof(&e.name):4
strlen(e.name):7
strlen(&e.name):7
sizeof(e.age):4
sizeof(&e.age):4
sizeof(e.score):4
sizeof(&e.score):4
STU e: e.name e.stuno e.age e.score
12feb4 12feb4 12fec8 12fed4 12fed8 /* 十六进制 */
1244852 1244852 1244872 1244884 1244888 /* 十进制 */
/* 要饭分析及疑惑: */
/* 1.请注意STU e的地址和e.name的址是相同的,这证明了结构的起始地址就是结构内第一个变量的起始地址
* 2. e.stuno - e.name刚好等于20,这和结构申明中 char name[20] 刚好吻合.
* 3. e.age - e.stuno 为什么是12而不是10?结构里申明不是只有10吗?
* 4. e.score - e.age 为什么是4?int型不是两个字节吗?
*/
-------------------------------------------------------------------
L1 *pL2
12ff2c 12ff28
Press any key to continue
LinkList L1; /* 这里L1是指针还是什么?它指向的是结构的地址哦 */
LinkList *pL2; /* 这里pL2是指向LinkList的地址吧,即指针的指针 */
LinkList L1 和 LinkList &L1 是什么关系啊.