对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<stdlib.h>//如果你不使用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<stdio.h>
int main()
{
   char str[100];
   gets(str);
   puts(str);
   puts("welcome to C language!");
   return 0;
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值