#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*LinkList;
void Init(LinkList L)
{
printf("%d ",L);
L=(LinkList)malloc(sizeof(Lnode));
printf("%d ",L);
L->next=0;
}
void main()
{
Lnode A;
printf("%d ",&A);
Init(&A);
}
很对不起,上面的的确错了,太急了,弄错了,这个是正确的,
在这个程序中关于开辟存储空间的问题:Lnode A,定义变量A,开辟一个存储空间,而初始化函数中Init()也开辟了一个存储空间,只不过这两个存储空间的位置不一样,但是既然是初始化,那他两个的都开辟了空间,不是重复了吗?
我的理解是:实参&A传递A空间的地址给指针L,但是再初始化的函数里又malloc了一个空间,那么L的值不是改变了变了吗?
既然这样那干嘛还要初始化?直接用定义变量开辟空间不就行了,可是这样操作的我下面的程序就会出错,而我见好多书上都有这个初始化。求助。。
能帮我解答一下初始化函数的作用吗?
追答LinkList A = NULL;//避免指向随机内存,一旦使用非常危险。
LinkList Init()// 申请内存后,把地址返回来,这样A就指向有效地址。
在使用指针前,最好要加判断。比如:
if(A != NULL)
{
对A进行操作。
}
或者:
if(A == NULL)
{
输出提示,或者退出程序/函数。
}
我感觉我写的程序中的初始化函数对A没有起一点作用...............因为初始化以后A什么都没变化,所以我感觉 Lnode A,就是最终的初始化。谢谢你了!!!
本回答被网友采纳C语言,什么时候需要开辟空间
其实写一个函数,开头的声明变量或数组就是在开辟空间,所以只要写代码,开辟空间的事肯定就少不了。但你这里说的我想应该是指“动态开辟空间”。动态开辟空间一般在以下情况下进行:编程时不知道需要多大的空间,要在程序运行时由用户输入大小或计算出所需大小;一些数据量太大,栈区放不下,需要创建在...
用C语言分配开辟内存问题
下一个:new和malloc()分配的空间都是在堆区,堆你就可以随意申请了,系统会在系统空闲的链表中找出你要申请空间的大小,标志为已经使用了,然后就会给你用 在申请空间后,注意检测一下申请空间返会值,为NULL就是系统给你分配空间失败了,用完了之后,你需要delete或free()掉你申请的,然后系统就...
【C】动态内存管理 malloc calloc relloc free 函数详解
该代码中free函数释放了malloc开辟的动态内存空间,但是没有将指针置空,导致后面调用时出现了野指针导致了非法访问。所以一个好的代码习惯是在释放动态内存空间后,将这个空间的指针置为空。5. C\/C++程序的内存开辟 C\/C++程序内存分配的几个区域:有了这幅图,我们就可以更好的理解之前介绍的static关...
C语言中如何动态增加内存空间
动态增加内存空间 可以用 realloc 函数。函数原型是。void* realloc (void* ptr, size_t size);例如,你第一次用 malloc 函数 动态分配了空间,随着一步步运算,觉得空间不够,需要加大空间,与此同时,原先空间里的数据需保留并还要继续使用,这时需要用 realloc,它能满足此需要。下面是完整的程序例...
c语言中malloc函数的用法
malloc函数是C语言中的一种动态内存分配函数。它可以在程序运行时动态地分配内存空间,使程序具有更大的灵活性和可扩展性。使用malloc函数可以在程序运行时动态地分配内存空间。例如,下面的代码片段可以申请一个大小为10个整形变量大小(即40个字节)的连续内存空间,并将其首地址赋给指针变量p。在程序运行...
C语言关于MALLOC的用法
未能正确释放已不再使用的内存空间。当程序中存在大量未释放的内存空间时,会逐渐消耗系统的可用内存,最终导致程序运行缓慢或崩溃。总之,malloc是C语言中实现动态内存分配的工具,它允许程序根据需要灵活地分配和释放内存空间。正确使用malloc和free函数可以有效管理内存,提高程序的性能和稳定性。
c语言动态数组如何扩充空间
c语言动态数组扩充空间,主要是利用动态存储分配库函数来实现的,常用的有malloc函数和calloc函数。malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。例如...
C语言中,怎么使用malloc函数为数组指针分配空间 比如要为char *p...
char (*pa)[10]; \/\/定义一个指向拥有10元素的字符数组的指针,int (*p)[10];应用格式可以参考下述程序,申请空间、赋值、输出后,可以观察到100被赋值到第五行第十个元素,指针可以像二维数组一样通过两个下标引用所申请开设的空间。include<alloc.h> main(){ int (*p)[10];int i,j,k;...
c语言中malloc是什么?怎么用?
说明:【参数说明】size 为需要分配的内存空间的大小,以字节(Byte)计。【函数说明】malloc() 在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。如果希望在分配内存的同时进行初始化,请使用 calloc() 函数。【返回值】分配成功返回指向...
一个C语言写的程序最多能申请到的malloc空间是多少?
malloc是开辟一个连续的空间,可能你电脑里没有连续的5M空间存在吧,所以会崩溃,就比方你开一个10000*10000的int型数组页可能会报错一样吧。