今天终于看完了C语言深度剖析这本书,对C语言有了进一步的了解与感悟,突然发觉原来自己学C语言的时候学得是那样的迷糊,缺少深入的思考,在重新看书的时候发觉C语言基本教材虽然经典,但是缺乏独到性,老师在讲解的过程中也就照本宣科了,没有多大的启迪。

看到C语言内存管理这块,发觉还是挺有用的,当然平时在编程时基本上就没有考虑过内存问题。

定义了指针变量,没有为指针分配内存,即指针没有在内存中指向一块合法的内存,尤其是结构体成员指针未初始化,往往导致运行时提示内存错误。

#include "stdio.h"#include"string.h"

structstudent

{char *name;intscore;struct student *next;

}stu,*stul;intmain()

{

strcpy(stu.name,"Jimy");

stu.score= 99;return 0;

}

由于结构体成员指针未初始化,因此在运行时提示内存错误

#include “stdio.h”

#include"malloc.h"#include"string.h"

structstudent

{char *name;intscore;struct student*next;

}stu,*stu1;intmain()

{

stu.name= (char*)malloc(sizeof(char)); /*1.结构体成员指针需要初始化*/strcpy(stu.name,"Jimy");

stu.score= 99;

stu1= (struct student*)malloc(sizeof(struct student));/*2.结构体指针需要初始化*/stu1->name = (char*)malloc(sizeof(char));/*3.结构体指针的成员指针同样需要初始化*/stu.next=stu1;

strcpy(stu1->name,"Lucy");

stu1->score = 98;

stu1->next =NULL;

printf("name %s, score %d \n",stu.name, stu.score);

printf("name %s, score %d \n",stu1->name, stu1->score);

free(stu1);return 0;

}

同时也可能出现没有给结构体指针分配足够的空间

stu1 = (struct student*)malloc(sizeof(struct student));/*2.结构体指针需要初始化*/

如本条语句中往往会有人写成

stu1 = (struct student*)malloc(sizeof(struct student *));/*2.结构体指针需要初始化*/

这样将会导致stu1的内存不足,因为sizeof(struct student)的长度为8,而sizeof(struct student

*)的长度为4,在32位系统中,编译器默认会给指针分配4字节的内存

原文:http://www.cnblogs.com/lijumiao/p/3624066.html

c语言中结构体的指针初始化,c语言结构体指针初始化相关推荐

  1. c语言中用于程序化结构设计的三种结构是,c语言中用于结构化程序设计的3种基本结构是...

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. c语言中用于结构化程序设计的3种基本结构是顺序结构.选择结构.循环结构. 顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出 ...

  2. c语言中存贮班级学生的变量,C语言----变量教案.docx

    C语言----变量教案 课 题 2.2 常量和变量----变量 课型 理实一体化 授课班级 高二计算机(升学班) 课时 2 教学目标 复习巩固C语言中常量的应用: 掌握C语言中变量的命名规则及应用. ...

  3. c语言 函数参数传递 值传递,c语言中函数参数的三种传递方式——值传递、指针传递、引用传递...

    函数参数有三种传递方式值传递.指针传递.引用传递. 1.值传递 将已经初始化的变量值(或常量)传递到函数中. 例如: int func(int value) { int ret = value++; ...

  4. c语言中减号算一个字符吗,C语言中指针的加减运算

    char arr[3]; printf("arr:\n%d\n%d\n%d\n", arr, arr + 1, arr + 2); char *parr[3]; printf(&q ...

  5. asin c语言中 返回值范围_大学C语言考试易错知识点总结

    作者:cggwz 来源:https://blog.csdn.net/cggwz/article/details/103740713?utm_medium=distribute.pc_relevant. ...

  6. C语言中 二进制有哪几个运算符 (举例),C语言中位运算符有哪些

    前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...

  7. 在c语言中 函数的作用是什么,C语言程序中函数的定义

    C语言程序中函数的定义 C语言的函数问题是困扰很多学者的问题的,c程序中什么是函数呢?下面啦小编为大家精心推荐的c程序中函数的定义,希望能够对您有所帮助. C语言读书笔记--函数 先来看看函数的一般形 ...

  8. 对于c语言中局部变量描述正确的是,c语言复习卷带答案.docx

    c语言复习卷带答案 <复习卷>试卷总分题号一二三四五题分得分得分一.单选题(每题1分,共计30分)1.下列选项中,不合法的变量是(D).A.int x = 3;B.char ch = 'c ...

  9. c语言中读和写的作用,c语言文件读写

    c语言文件读写 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种. ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码.ASCII码 ...

  10. 编程c语言中_是什么意思,计算机C语言中的关键字:double是什么意思?

    用户提问 RT 推荐答案 double:表示双精度字型. C语言中的关键字: auto :声明自动变量 break:跳出当前循环 case:开关语句分支 char :声明字符型变量或函数返回值类型 c ...

最新文章

  1. java dolayout,Component
  2. 高电压技术思维导图_钢铁技术:钢铁行业板坯连铸结晶器振动常见故障思维导图...
  3. JetBrains PyCharm免费版
  4. ncsi信号测试软件,02-附录
  5. DNS安全漫谈:DNS劫持频发,网络安全去哪儿了?
  6. 大一到大二的总结与感想
  7. 《自然—代谢》:中科院微生物所刘宏伟/刘双江团队报道改善动脉粥样硬化的“新思路”...
  8. 如何使用注册表在Win10中调整屏幕亮度
  9. o2o现状及未来发展趋势是什么?
  10. 生成树协议(RTP、RSTP、MSTP)
  11. java基础知识整理
  12. 安卓开发— —仿微信界面(二)
  13. 服务器信号有杂音怎么回事,直播有杂音是怎么回事?奉上原因及解决方法
  14. 区块链开发工程师和人工智能算法工程师,哪个会在未来 5 年收入更高?
  15. 【亚马逊运营】有关滞销库存的处理方法之站内清库存法!
  16. bread是可数还是不可数_学了20年英语才明白:bread为什么是不可数名词?
  17. 一部以中国现实为大背景的英国科幻电影《未来密码46》
  18. [cocos2d-x] -- Cocos2d-x简介
  19. Xpath语法之谓语小记
  20. HTTP Status 404 / tomcat 404问题解决

热门文章

  1. 60分钟搞定mac安装win10系统(详细图文教程)
  2. Flex中label换行
  3. m1芯片安装Oracle11g数据库
  4. 【JavaScript】JS处理32位整型位运算
  5. JS中巧妙使用JSON教程
  6. 2022年施工升降机司机(建筑特殊工种)考题及模拟考试
  7. SQL 删除数据库文件,删除SQL文件 无法删除 文件‘NEWDB2021‘,因为它不为空
  8. 设为首页和收藏网站代码(火狐,IE6.ie7.ie8.ie9都可用)
  9. SLAM最新算法编译debug总结
  10. ios 优秀的三方块总结