#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<math.h>
#include<time.h>
typedef struct student
{
char name[21];
int age;
}STU, * pSTU;
typedef struct linkStackNode
{
struct linkStackNode* pNext; //只维护指针域
}LINKSTACKNODE, * pLINKSTACKNODE;
typedef struct linkStack //链式的栈结构体,栈顶设计在头部
{
LINKSTACKNODE headNode; //头节点【不是头指针】,并不存放有效数据
int length; //栈的大小
}LINKSTACK, * pLINKSTACK;
//====================================================================================================
//初始化栈
pLINKSTACK initLinkStack()
{
//头指针
pLINKSTACK pLinkStackHead = (pLINKSTACK)malloc(sizeof(LINKSTACKNODE));
if (NULL == pLinkStackHead)
{
printf("内存分配失败.\n");
return NULL;
}
pLinkStackHead->headNode.pNext = NULL;
pLinkStackHead->length = 0;
return pLinkStackHead;
}
//====================================================================================================
int main(int argc, char* argv[])
{
STU stu1;
strcpy(stu1.name, "张三");
stu1.age = 23;
pSTU pStu = (pSTU)malloc(sizeof(pSTU));
pStu = &stu1;
printf("name = %s ||=====|| age = %d\n", pStu->name, pStu->age);
pLINKSTACK pLinkStackHead = initLinkStack();
pLINKSTACKNODE pLSN = (pLINKSTACKNODE)malloc(sizeof(LINKSTACKNODE));
pLSN = (pLINKSTACKNODE)&stu1;
pLSN->pNext = pLinkStackHead->headNode.pNext;
pLinkStackHead->headNode.pNext = pLSN;
pSTU tmp = (pSTU)pLinkStackHead->headNode.pNext;
printf("name = %s ||=====|| age = %d\n", tmp->name, tmp->age);
system("pause");
return EXIT_SUCCESS;
}
为什么最后一个printf,没有打印出name的信息
pLSN = (pLINKSTACKNODE)&stu1;
pLSN->pNext = pLinkStackHead->headNode.pNext;//stu1.name[]被修改为NULL了