请教关于结构体

yamzenyi 2009-07-29 07:43:05
声明的结构体变量什么时候可以直接使用什么时候需要申请内存空间
他们两有什么区别?

struct test
{
int a;
char *s;
};

struct test *b;
b=(struct test *)malloc(sizeof(struct test));
...全文
129 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yamzenyi 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 supermegaboy 的回复:]
引用楼主 yamzenyi 的回复:
声明的结构体变量什么时候可以直接使用什么时候需要申请内存空间
他们两有什么区别?

struct test
{
int a;
char *s;
};

struct test *b;
b=(struct test *)malloc(sizeof(struct test));


当定义一个struct test对象的时候就可以直接使用,而定义为一个指针struct test*的时候需要为它分配空间。
[/Quote]
谢谢解答*^^*
yamzenyi 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liao05050075 的回复:]
首先,手动申请的对象所占空间是堆空间,直接定义的占用的是栈空间。一个程序的栈空间是有限的,所以如果你需要的空间很大的话,那么一般要动态申请。

其次,动态申请空间有时能达到节省空间的目的,比如一个数组的大小你要在程序运行时才知道大小,那么你就运行时再申请,而不是直接开一个int[maxn]的数组。

最后,动态申请是算法的实现要求,比如你做一个链表,很自然地,新建一个结点就是要动态申请一个。
[/Quote]
3Q~ 明白了
yamzenyi 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hairetz 的回复:]
引用楼主 yamzenyi 的回复:
声明的结构体变量什么时候可以直接使用什么时候需要申请内存空间
他们两有什么区别?

struct test
{
int a;
char *s;
};

struct test *b;
b=(struct test *)malloc(sizeof(struct test));


你先搞清楚,堆和栈的区别,应该就没问题了。

http://blog.csdn.net/hairetz/archive/2009/04/30/4141043.aspx
[/Quote]
谢谢^_^
xuruiyi 2009-07-29
  • 打赏
  • 举报
回复
最好申请完后,判断指针是否为空,这样比较保险!
jn989 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liao05050075 的回复:]
首先,手动申请的对象所占空间是堆空间,直接定义的占用的是栈空间。一个程序的栈空间是有限的,所以如果你需要的空间很大的话,那么一般要动态申请。

其次,动态申请空间有时能达到节省空间的目的,比如一个数组的大小你要在程序运行时才知道大小,那么你就运行时再申请,而不是直接开一个int[maxn]的数组。

最后,动态申请是算法的实现要求,比如你做一个链表,很自然地,新建一个结点就是要动态申请一个。
[/Quote]
up!
十八道胡同 2009-07-29
  • 打赏
  • 举报
回复
直接申明的对象可以直接用,指针不行的,要申请空间的
  • 打赏
  • 举报
回复
[Quote=引用楼主 yamzenyi 的回复:]
声明的结构体变量什么时候可以直接使用什么时候需要申请内存空间
他们两有什么区别?

struct test
{
int a;
char *s;
};

struct test *b;
b=(struct test *)malloc(sizeof(struct test));
[/Quote]

你先搞清楚,堆和栈的区别,应该就没问题了。

http://blog.csdn.net/hairetz/archive/2009/04/30/4141043.aspx
liaoweixiaoyu 2009-07-29
  • 打赏
  • 举报
回复
对象直接使用,指针就需要分配内存了。
jsxdihao 2009-07-29
  • 打赏
  • 举报
回复
四楼正解
lzy0001sl 2009-07-29
  • 打赏
  • 举报
回复
当定义一个结构体对象的时候,系统会在栈上为其分配sizeof(struct)大小的内存空间。当定义一个结构体指针的时候在栈上分配一个4字节的地址空间,因此定义的指针需要自己申请内存。
[Quote=引用楼主 yamzenyi 的回复:]
声明的结构体变量什么时候可以直接使用什么时候需要申请内存空间
他们两有什么区别?

struct test
{
int a;
char *s;
};

struct test *b;
b=(struct test *)malloc(sizeof(struct test));
[/Quote]
Arnold9009 2009-07-29
  • 打赏
  • 举报
回复
struct test *b; -----这里是声明了一个结构体指针b
b=(struct test *)malloc(sizeof(struct test)); ---这里是将malloc分配的内存的指针进行强制类型转换,然后赋给结构体指针b
liao05050075 2009-07-29
  • 打赏
  • 举报
回复
首先,手动申请的对象所占空间是堆空间,直接定义的占用的是栈空间。一个程序的栈空间是有限的,所以如果你需要的空间很大的话,那么一般要动态申请。

其次,动态申请空间有时能达到节省空间的目的,比如一个数组的大小你要在程序运行时才知道大小,那么你就运行时再申请,而不是直接开一个int[maxn]的数组。

最后,动态申请是算法的实现要求,比如你做一个链表,很自然地,新建一个结点就是要动态申请一个。
科技完美生活 2009-07-29
  • 打赏
  • 举报
回复
是啊,是指针的话就有可能要申请,但是也要看指针变量是怎么用的
飞天御剑流 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 yamzenyi 的回复:]
声明的结构体变量什么时候可以直接使用什么时候需要申请内存空间
他们两有什么区别?

struct test
{
int a;
char *s;
};

struct test *b;
b=(struct test *)malloc(sizeof(struct test));
[/Quote]

当定义一个struct test对象的时候就可以直接使用,而定义为一个指针struct test*的时候需要为它分配空间。
city_t 2009-07-29
  • 打赏
  • 举报
回复
只要不用指针就能直接使用吧
书上说用指针快,效率高
真正有什么差别我也不知道
lijian22500 2009-07-29
  • 打赏
  • 举报
回复
要区分堆 和 栈
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这包括了解课程设计的主题、目标以及需要解决的问题。这将有助于你确定设计的范围和方向。 选择项目主题:选择一个与C语言相关的项目主题。例如,你可以设计一个学生成绩管理系统、一个简单的文本编辑器或一个游戏等。确保所选主题既具有挑战性又能够展示你的C语言编程技能。 进行问题分析:一旦确定了项目主题,你需要对问题进行深入分析。这包括确定问题的输入和输出、理解问题的要求和限制条件,以及将复杂问题分解为更小的子问题。这将有助于你更好地理解和解决问题。 设计算法和数据结构:针对项目需求,设计合适的算法和数据结构。这包括确定如何存储和处理数据、如何设计函数和模块等。 编写代码:使用C语言编写代码,实现项目功能。注意遵守C语言的语法规则,确保代码的可读性和可维护性。 测试和调试:在编写完代码后,进行测试和调试。确保代码能够正确运行并满足项目需求。使用调试工具和技术来查找和修复代码中的错误。 文档编写:编写项目文档,包括项目说明、功能介绍、代码注释等。这将有助于其他人理解你的项目并复用你的代码。 提交和展示:最后,将你的课程设计项目提交给教师或相关人员,并在课堂上进行展示。展示时可以介绍项目的功能、实现过程以及遇到的挑战和解决方案等。 在进行C语言课程设计时,还需要注意以下几点: 遵守编程规范,包括变量命名、代码缩进、注释等。 充分利用C语言的特点和优势,如指针、结构体、文件操作等。 注重实践和应用,通过解决实际问题来加深对C语言的理解和应用能力。 在遇到困难时,及时向教师或同学请教,并查阅相关资料和文档。 通过以上步骤和建议,你可以完成一个高质量的C语言课程设计项目,并提升自己的编程能力和实践经验。
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这包括了解课程设计的主题、目标以及需要解决的问题。这将有助于你确定设计的范围和方向。 选择项目主题:选择一个与C语言相关的项目主题。例如,你可以设计一个学生成绩管理系统、一个简单的文本编辑器或一个游戏等。确保所选主题既具有挑战性又能够展示你的C语言编程技能。 进行问题分析:一旦确定了项目主题,你需要对问题进行深入分析。这包括确定问题的输入和输出、理解问题的要求和限制条件,以及将复杂问题分解为更小的子问题。这将有助于你更好地理解和解决问题。 设计算法和数据结构:针对项目需求,设计合适的算法和数据结构。这包括确定如何存储和处理数据、如何设计函数和模块等。 编写代码:使用C语言编写代码,实现项目功能。注意遵守C语言的语法规则,确保代码的可读性和可维护性。 测试和调试:在编写完代码后,进行测试和调试。确保代码能够正确运行并满足项目需求。使用调试工具和技术来查找和修复代码中的错误。 文档编写:编写项目文档,包括项目说明、功能介绍、代码注释等。这将有助于其他人理解你的项目并复用你的代码。 提交和展示:最后,将你的课程设计项目提交给教师或相关人员,并在课堂上进行展示。展示时可以介绍项目的功能、实现过程以及遇到的挑战和解决方案等。 在进行C语言课程设计时,还需要注意以下几点: 遵守编程规范,包括变量命名、代码缩进、注释等。 充分利用C语言的特点和优势,如指针、结构体、文件操作等。 注重实践和应用,通过解决实际问题来加深对C语言的理解和应用能力。 在遇到困难时,及时向教师或同学请教,并查阅相关资料和文档。 通过以上步骤和建议,你可以完成一个高质量的C语言课程设计项目,并提升自己的编程能力和实践经验。
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这包括了解课程设计的主题、目标以及需要解决的问题。这将有助于你确定设计的范围和方向。 选择项目主题:选择一个与C语言相关的项目主题。例如,你可以设计一个学生成绩管理系统、一个简单的文本编辑器或一个游戏等。确保所选主题既具有挑战性又能够展示你的C语言编程技能。 进行问题分析:一旦确定了项目主题,你需要对问题进行深入分析。这包括确定问题的输入和输出、理解问题的要求和限制条件,以及将复杂问题分解为更小的子问题。这将有助于你更好地理解和解决问题。 设计算法和数据结构:针对项目需求,设计合适的算法和数据结构。这包括确定如何存储和处理数据、如何设计函数和模块等。 编写代码:使用C语言编写代码,实现项目功能。注意遵守C语言的语法规则,确保代码的可读性和可维护性。 测试和调试:在编写完代码后,进行测试和调试。确保代码能够正确运行并满足项目需求。使用调试工具和技术来查找和修复代码中的错误。 文档编写:编写项目文档,包括项目说明、功能介绍、代码注释等。这将有助于其他人理解你的项目并复用你的代码。 提交和展示:最后,将你的课程设计项目提交给教师或相关人员,并在课堂上进行展示。展示时可以介绍项目的功能、实现过程以及遇到的挑战和解决方案等。 在进行C语言课程设计时,还需要注意以下几点: 遵守编程规范,包括变量命名、代码缩进、注释等。 充分利用C语言的特点和优势,如指针、结构体、文件操作等。 注重实践和应用,通过解决实际问题来加深对C语言的理解和应用能力。 在遇到困难时,及时向教师或同学请教,并查阅相关资料和文档。 通过以上步骤和建议,你可以完成一个高质量的C语言课程设计项目,并提升自己的编程能力和实践经验。
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这包括了解课程设计的主题、目标以及需要解决的问题。这将有助于你确定设计的范围和方向。 选择项目主题:选择一个与C语言相关的项目主题。例如,你可以设计一个学生成绩管理系统、一个简单的文本编辑器或一个游戏等。确保所选主题既具有挑战性又能够展示你的C语言编程技能。 进行问题分析:一旦确定了项目主题,你需要对问题进行深入分析。这包括确定问题的输入和输出、理解问题的要求和限制条件,以及将复杂问题分解为更小的子问题。这将有助于你更好地理解和解决问题。 设计算法和数据结构:针对项目需求,设计合适的算法和数据结构。这包括确定如何存储和处理数据、如何设计函数和模块等。 编写代码:使用C语言编写代码,实现项目功能。注意遵守C语言的语法规则,确保代码的可读性和可维护性。 测试和调试:在编写完代码后,进行测试和调试。确保代码能够正确运行并满足项目需求。使用调试工具和技术来查找和修复代码中的错误。 文档编写:编写项目文档,包括项目说明、功能介绍、代码注释等。这将有助于其他人理解你的项目并复用你的代码。 提交和展示:最后,将你的课程设计项目提交给教师或相关人员,并在课堂上进行展示。展示时可以介绍项目的功能、实现过程以及遇到的挑战和解决方案等。 在进行C语言课程设计时,还需要注意以下几点: 遵守编程规范,包括变量命名、代码缩进、注释等。 充分利用C语言的特点和优势,如指针、结构体、文件操作等。 注重实践和应用,通过解决实际问题来加深对C语言的理解和应用能力。 在遇到困难时,及时向教师或同学请教,并查阅相关资料和文档。 通过以上步骤和建议,你可以完成一个高质量的C语言课程设计项目,并提升自己的编程能力和实践经验。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧