C 语言指针的问题
高洛峰
高洛峰 2016-11-07 13:50:59
[C++讨论组]

结构体的指针运算,编译可以通过,但是运行时出现错误,不知道为什么,求详解!

#include<stdio.h>
#include<stdlib.h>

typedef struct Stack{
  int * List;
  int curNumber;
}Stack, *link;

int main(){
  void initst(link *A);
  void pus(link *A,int k);
  
  link *A;
  int k = 8;
  initst(A);
  pus(A, k);
  return 0;
}

void initst(link *A){
  *A = (link#)malloc(sizeof(Stack));
  (*A) -> List = (int *)malloc(4 * sizeof(int));
}
void pus(link *A,int k){
  *((*A)-> List) = k;
  printf("%d \n",*((*A) -> List));  
}


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

你的A是个二级指针吧。其实是Stack **A对吧。
你在initst对*A进行修改,可是你没有初始化A啊,A指向的是随机地址。
类型这么定义比较好
…… }Stack, *PStack;
……
PStack pA; // 注意 pA 也是一个指针啊! 
PStack *ppA = &pA;
initst(ppA);
你这个逻辑调用initst后会修改pA存储的地址啊。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号