C语言中buffer到底是什么意思?是数组?缓冲区?为什么一般C程序中都不定义他直接拿来用呢?

还有,为什么不用别的变量,很多程序中非用这个字眼呢?我是刚学,希望有人能详细解答下... 还有,为什么不用别的变量,很多程序中非用这个字眼呢?我是刚学,希望有人能详细解答下 展开
 我来答
爱教育爱学习
高粉答主

2019-10-25 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112732

向TA提问 私信TA
展开全部

C语言中buffer是缓冲区的意思。

不定义是不能拿过来直接用的,因为它肯定是在别的地方定义的,比如头文件,或者是个全局变量等。一般是在编译器里面,右键这个变量,选gotodifination就可以看到它在哪定义的了。

缓冲区它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。

扩展资料

C语言循环buffer的实现

#ifdefined(__CIRCLE_BUFFER__)

//"circle_buffer.h"

#ifndef__CIRCLE_BUFFER_H__

#define__CIRCLE_BUFFER_H__

#ifdefined(__CIRCLE_BUFFER__)

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<assert.h>

typedefunsignedcharcb_u8;

typedefunsignedshortintcb_u16;

typedefunsignedintcb_u32;

typedefsignedcharcb_s8;

typedefsignedshortintcb_s16;

typedefsignedintcb_s32;

typedefcharcb_char;

typedefenum{cb_false,cb_true}cb_bool;

typedefstruct{

cb_u8*bufptr;

cb_u32buflen;

cb_u32datalen;

cb_u32readpos;

cb_u32writepos;

}CircleBufferMngr;

typedefstruct{

void(*cb_init)(CircleBufferMngr**,cb_u32);

void(*cb_deinit)(CircleBufferMngr**);

void(*cb_info)(CircleBufferMngr*,cb_char*,cb_u32);

cb_u32(*cb_read)(CircleBufferMngr*,cb_u8*,cb_u32);

cb_u32(*cb_write)(CircleBufferMngr*,cb_u8*,cb_u32);

cb_u32(*cb_datalen)(CircleBufferMngr*);

cb_bool(*cb_full)(CircleBufferMngr*);

cb_bool(*cb_empty)(CircleBufferMngr*);

}CircleBufferApi;

#defineCB_MEMCPYmemcpy

#defineCB_MEMSETmemset

#defineCB_SPRINTsprintf

#defineCB_MALLOCmalloc

#defineCB_MFREEfree

#defineCB_ASSERTassert

#defineCB_SNPRINTsnprintf

#defineCB_TRACEprintf

//锁定,禁止中断和任务调度

#defineCB_GLOBAL_LOCK

#defineCB_GLOBAL_UNLOCK

externconstCircleBufferApicircleBufApi;

#defineCBMA_INITcircleBufApi.cb_init

#defineCBMA_DEINITcircleBufApi.cb_deinit

#defineCBMA_INFOcircleBufApi.cb_info

#defineCBMA_READcircleBufApi.cb_read

#defineCBMA_WRITEcircleBufApi.cb_write

#defineCBMA_DATALENcircleBufApi.cb_datalen

#defineCBMA_FULLcircleBufApi.cb_full

#defineCBMA_EMPTYcircleBufApi.cb_empty

#endif/*__CIRCLE_BUFFER__*/

#endif/*__CIRCLE_BUFFER_H__*/

小夏聊生活
高能答主

2019-12-08 · 专注于分享生活知识,热爱生活
小夏聊生活
采纳数:447 获赞数:114611

向TA提问 私信TA
展开全部

Buffer是NodeJS的重要数据类型,很有广泛的应用。代表原始堆的分配额的数据类型。在NodeJS中以类数组的方式使用。

在Buffer类的描述中,Buffer被定义为用于特定基本类型数据的容器,且是特定基本类型的线性优先元素序列。

Buffer提供了一个字节缓冲区,它可以从channels中读取数据到Buffer,也可以将Buffer中的数据写入到channels,所以NIO被定义为面向缓冲区编程,而IO则是被定义为面向流的编程。

当一个缓存中的数据被多次读取,实际上就减少了该数据从慢速设备中读取的量,这就存在某种算法去选择什么数据需要保存在cache中,因为尽可能多的让cache命中能提高性能。

扩展资料

Buffer类的四个变量

1、capacity

容量,必须初始化的值(因为底层是数组)

2、limit

上界,缓冲区的临界区,即最多可读到哪个位置

3、position

下标,当前读取到的位置(例如当前读出第5个元素,则读完后,position为6)

4、mark

标记,备忘位置

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anglecloudy
推荐于2017-11-28 · TA获得超过1981个赞
知道小有建树答主
回答量:831
采纳率:0%
帮助的人:620万
展开全部
buffer就是缓冲区的意思

为什么一般C程序中都不定义他直接拿来用呢?

这个不可能,C语言有着严格的语法。不定义不能拿过来直接用。肯定是在别的地方定义的,如头文件,或者是个全局变量等。一般在编译器里面,右键这个变量,选go to difination(就是转到定义)就可以看到它在哪定义的了。

它一般用来定义数组,因为它本身的意思就是“缓冲区”,在C语言里,数组就是个缓冲区,所以用常常用它。
用它没有别的意思,就是方便记,你可以用shuzu mydata甚至你自己名字的拼音都行,主要是用它别人也很容易懂这个变量是搞啥的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CYB_LAOCAO
2010-10-24 · TA获得超过141个赞
知道答主
回答量:120
采纳率:0%
帮助的人:125万
展开全部
就是缓冲区,临时存数据用的一块内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式