栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

对C语言中malloc函数的理解以及gets和puts的用法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对C语言中malloc函数的理解以及gets和puts的用法

一丶malloc函数

1.对于malloc函数的声明:void*malloc(int size);

首先malloc函数的作用是分配内存,所以从它的声明上看,malloc分配size个字节内存空间。返回的类型是void,但是在c中,可以强制转换为其他的类型的指针。

比如说:

char *str;
str=(char*)malloc(sizeof(char));

而如果按下面这样写就是错的。

char *str;
str=malloc(sizeof(char));

因为malloc返回值的void,无法将void赋值给char,只有通过(char*)来强制转换。

更具体的写法为:

str=(char*)malloc(sizeof(char)*100)

这个就表明你想分配100个char类型的空间。

2.malloc的注意事项

(1)malloc函数他只分配内存,但不会对内存进行初始化,其空间中的值是随机的。

(2)使用malloc一定要注意分配内存的大小,比如说:

int *p;
p=(int*)malloc(1);

如果这样的,代码是不会报错的,但是这个时候你只分配了1个字节给p,但是p是int类型,具有4个字节,剩下的3个字节就会向后面分配,这样就占用了别人的空间,结果就导致别人原本的值就消失了。

(3)malloc是手动申请内存,我们在结束程序的时候也要手动将这些内存释放出去。这个时候我们就需要用到free函数了。

3.free函数

(1)对free函数的声明:void free(指针变量)

(2)我们使用free前需要包含头文件#include//如果你不使用free函数释放内存,则不用包含这个头文件,因为malloc可以直接在stdio.h的头文件的使用//

(3)使用的格式也比较简单

int *p=(int*)malloc(sizeof(int)*100);
free(p);

4.如果使用malloc函数而不使用free函数释放,那么malloc分配的内存则会存在计算机中,但是如果我们程序不运行时,系统也会自动释放这些内存,但是出于习惯,还是用free释放好一点。

二丶函数gets和puts

1.gets

gets的作用是从键盘中读入一个字符串。一般为gets(数组名),这样就将键盘输入的字符串给指定的数组。它与scanf的作用相似但不相同,因为在scanf中你输入一个空格字符串是,scanf会认为你已经输入结束,但是在gets会输入整个字符串直到回车截至,它仅以回车符作为分隔号。

gets的原型:

char *gets(char *p)
{
   .....
   .....
   return p;
}

2.puts

puts的作用是从屏幕中输出一个字符串。一般为puts(数组名)或者puts(字符串指针),所以它的作用就和printf差不多,区别同上,puts()里面也可以直接写一串字符串。

puts的原型:

int puts(const char*str)

下面就用一个具体的代码演示:

#include
int main()
{
   char str[100];
   gets(str);
   puts(str);
   puts("welcome to C language!");
   return 0;
}

最后我们在使用puts和gets的时候,最好将文件改为c文件,因为cpp中没有引入gets。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号