c语言底层实现问题,,,,

像putchar()这样的函数怎么实现向终端发送一个字符的。

2个回答

不同的操作系统不同。
dos下是调用了INT21H中断
windows下是调用了WriteFile(con)

是通过二进制编译,该语言是面向过程

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言函数调用的底层实现
最近在阅读大名鼎鼎的《深入理解计算机系统》,读到第三章,介绍了函数的底层实现。对底层的实现有了一些了解。 为了理解,我就用书上的例子,如果在中途有出现的术语,我会就近解释。 1. 背景 全文将会围绕下面两个函数来介绍所有的实现机制,这两个函数是: 第一个,主调用函数(它去调用另外一个函数 proc) long call_proc() { long x1 = 1; in...
java和c语言变长参数的底层实现区别
java和c语言变长参数的底层实现存在着区别java其实是一个语法糖 类似private static int sumUp(int... values) { }其实最后编译时会转化为 实际上是传递了一个数组引用private static int sumUp(int[] values) { }所以如果同时写这两个函数,就会编译不通过,他们本质上是一样的而c语言的变长参数就要说到函数调用约定了
Go语言interface底层实现
Go的interface源码在Golang源码的runtime目录中。 Go在不同版本之间的interface结构可能会有所不同,但是,整体的结构是不会改变的,此文章用的Go版本是1.11。 Go的interface是由两种类型来实现的:iface和eface。 其中,iface表示的是包含方法的interface,例如: type Example interface{ } ...
解剖Go语言map底层实现
map是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? Golang中map的底层实现是一个散列表,因此实现map的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫hmap(a header for a go map),一个叫bmap(a bucket for a Go map,通常叫其bucket)。这两种结构的样子分别如下...
=的底层实现?
“=”操作符的底层实现,谁能提供下rnrn以前记得“=”不能作为字符串的赋值,rn现在居然可以,而且没有告警提示。rnint main()rnrn char *p;rn p="iiiiiiiiiiii";rn printf("-%s--%d-",p,strlen(p));rn
IO 的底层实现问题
底层IO操作涉及到的一些知识。
关于底层实现FTP的问题
8139网卡提供了一个DOS下的RTSPKT驱动程序包,它给出了一个中断(INT 60h)接口可以实现初始化8139网卡、FTP包的发送等功能,有种硬盘保护卡就是利用它实现BIOS一级的硬盘网络克隆。具体做法是:一台主机向网内的所有计算机发送硬盘数据的广播包,其它计算机接收到数据后将数据写入到自己硬盘。rn我分析并跟踪了一下其操作过程,并模拟用汇编写了一个FTP包发送程序。rn但,由于我对传送包的结构不甚了解,对自己编写的程序虽能够实现包(包是用嗅探软件:sniffer抓取的)的发送,肯定是包的结构不对,对应的FTP服务器没有响应。rn因此想跟DX们请教和探讨一下下面的2个问题:rn1、FTP包是如何组织的,其具体的结构和某些累加和字节的算法。rn2、关于本地机包的接收,我想肯定应该是通过本地网卡产生中断再通过相应的中断处理程序实现的,但我已经花了很大的精力去跟踪那个网络硬盘克隆程序可无论如何就是找不到这个中断和处理程序,百思不得其解,不知哪位DX有过这方面的经验可传授。rnrn我要实现的程序的目的是:BIOS级别的FTP登陆到FTP服务器,从FTP服务器上取到文件和向FTP服务器发送文件。
有关打印机的底层实现问题。
我公司是做PDA(掌上电脑)的,OS是自己写的,现在想实现红外线、串口(rs232)连接实现打印功能,我对打印机底层东东一点不懂。公司给了我一个sipix公司的pocket printer A6打印机(A6纸),我去那公司的主页上看了看,找不到很底层的有用的东东。我想问大家几个问题,欢迎大家提供源码:(大家不要告诉我用VC下的函数,公司的开发环境不同于VC)rn1。我想知道通过串口打印时底层协议问题。(PDA该怎么样连接、控制打印机的动作等)rn 大家如果能告诉我有什么通用协议就更好了。(就是可以实现和多种打印机的通信)rn2。用红外线连接时又是什么情况。
java容器迭代器底层实现问题
对于一些有序的容器,例如ArrayList,迭代器可以通过遍历数组下标实现(个人猜想是这样的,实际是怎么样的球告知),但是一些无序的容器,例如HashMap,迭代器怎么遍历,怎么实现next不重复,我想了解确切的实现方法,有没有研究过这方面的朋友可以告知下。
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语言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语言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语言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语言,C语言,C语言,C语言,C语言,C语言,C语言,C语言,C语言,
C 语言C 语言C 语言C 语言
C 语言C 语言C 语言C 语言CC 语言C 语言C 语言C 语言 语言C 语言C 语言C 语言C 语言C 语言C 语言C 语言CC 语言C 语言C 语言C 语言 语言C 语言C 语言C 语言C 语言C 语言C 语言C 语言C 语言C 语言C 语言CC 语言C 语言C 语言C 语言 语言C 语言C 语言
C语言中字符串函数的使用底层实现方法
#include #include using namespace std; int Strlen(char *ar)//length { int len=0; if(ar == NULL) return 0; while(*ar++ != 0) { len ++; } return len; } void St
C语言 指针学习 C语言C语言C语言
C语言 指针学习 C语言 指针学习 C语言 指针学习
c语言c语言c语言c语言
#define MUL(A,B) A*Bnint main()nninta=1,b=2,c=3,d=0;nd=MUL(a+b,c);nprintf(“%d”,d);nreturn0;nn这个程序输出是什么,为什么我运行不了。。还有这个nharch[]=“WelcometoXiyounet”nchar*p=ch;nprintf(“%c%c”,*(p+2),*p+2);
c语言的.c和.h问题
Linux下c语言编程中,.c文件如果想和.h文件关联怎么做,是不是用makefile文件?rn好像简单的写个.h文件,并在里面声明.c文件中的函数是不行的
HashSet底层实现
前几天了解了hashmap的底层实现,现在继续看一下hashset的底层实现。由于hashset底层是由hashmap实现的,所以放到后面 来讲。有关hashmap的底层实现,可以戳这里: HashMap底层实现(jdk1.8) HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒 久不变。此类允许使用null元
ArrayList底层实现
package com.scxh.ex11list.arrayList; import java.util.ArrayList; import java.util.Arrays; public class MyArrayList{     private Object[] obj;        private int size;   //元素的个数          p
= 与 +=底层实现的区别?
[code=Java]rnpublic class TestEnhanceAssignrnrn public static void main(String[] args)rn rn // 定义一个byte类型的变量rn byte a = 5;rnrn // 下面语句出错,因为5默认是int类型, a + 5就是int类型rn // 把int类型赋给byte类型的变量,所以出错rn a = a + 5;rnrn byte b = 5;rn rn // 下面语句将不会出错rn b += 5;rn rnrn[/code]rnrn为什么b += 5;不会出错。
hashtable的底层实现
小弟想要了解关于c++STL中的hashtable的底层实现,听说和java的底层实现是一样的,不知道要参考哪些书籍,请各位大神指点
ArrayList的底层实现
1、底层是Object数组,叫做 elementData 2、默认容量10,叫做 DEFAULT_CAPACITY,不是初始容量 3、如果不指定初始容量,刚new出来的list如果没有存储任何对象,则容量为0,但是如果指定了初始容量,刚开始size也是为0 ArrayList<String> list = new ArrayList(); System.out.println(...
链表底层实现
public class LinkedList { private class Node { E e; Node next;//指向下一个元素节点的引用 //构造方法 public Node(E e,Node next) { this.e = e; this.nex...
RPC底层实现
1、基本原理 RPC底层原理: 服务端:暴露一个服务接口,整个接口中方法逻辑实现 暴露服务接口: Map<String,Object> key:暴露服务接口的名称 value:这个接口对应的实现类的实例 通过客户端传入的接口名称获取暴露服务列表中的接口实例,通过反射调用对应方法 客户端:调用暴露一个服务接口,不用管整个接口的具体实现逻辑,只管调用获取相应结果就ok 接口能直接调用:...
fork()的底层实现
  fork之后父进程与子进程的区别 进程ID不同;(父进程的返回值是子进程的ID) 子进程中tms_utime  tms_stime  tms_cutime和tms_ustime的值设为0; 子进程不继承父进程设置的文件锁(子进程继承了父进程中的所有互斥锁、读写锁和条件变量(包括他们的状态),在多线程中,另做处理); 子进程的未处理闹钟会被清除; 子进程的未处理信号集设置为空集; 子进...
Handler的底层实现
Handler的底层实现1.查看Handler源码的基本流程(其他类似)首先查看Handler的构造方法,对初始化变量有一个大致的了解,然后开始走调用逻辑,Handler的sendMessage(),handleMessage()等等2.Handler的大致原理Handler:发送消息send,处理消息handleMessage:消息的实体,Handler通过sendMessage()将Messa...
PHP 底层实现
​ 2、 请在local环境,编译PHP,要求:版本5.4, 5.5, 5.6,每个版本要涵盖3个编译版本,包括nts \ zts \ debug /usr/lib/apache2/modules /etc/apache2/mods-enabled/ vim php5.load  .编译php的ztf,ntf,deb
HashMap的底层实现
public class HashMap<K,V> extends AbstractMap<K,V>    implements Map<K,V>, Cloneable, Serializable  HashMap的底层(JDK1.7)transient Node<K,V>[] table; JDK1.8transient Entry<K,V&...
Java集合之HashMap
转自http://www.cnblogs.com/xwdreamer/archive/2012/06/03/2532832.html
Synchronized底层实现
一、锁的几种形式 传统的锁 传统的锁(也就是下文要说的重量级锁)依赖于系统的同步函数,这些同步函数都涉及到用户态和内核态的切换、进程的上下文切换,成本较高。所以对于加了synchronized关键字但是运行时并没有多线程竞争,或两个线程接近于交替执行的情况,传统的锁机制无疑是效率比较低的。在JDK1.6之前,synchronized只有传统的锁机制,因此给开发者留下了synchronized关...
问题 C: C语言11.4
题目描述设有若干个人员的数据,其中包含学生和教师。学生的数据中包括:号码、姓名、性别、职业、班级。教师的数据包括:号码、姓名、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现在要求把这些数据放在同一个表格中储存,使用结构体中的共用体实现。结构体定义如下:struct {    int num;    char name[10];    char sex;    char job;  ...
hashMap的底层实现
  上面我们提到过Entry类里面有一个next属性,作用是指向下一个Entry。如, 第一个键值对A进来,通过计算其key的hash得到的i=0,记做:Entry[0] = A。一会后又进来一个键值对B,通过计算其i也等于0,现在怎么办?HashMap会这样做:B.next = A,Entry[0] = B,如果又进来C,i也等于0,那么C.next = B,Entry[0] = C;这样...
TreeSet的底层实现
使用场景: (1)如果应用程序对各个索引位置的元素进行大量的存取或删除操作,ArrayList对象要远优于LinkedList对象; ( 2 ) 如果应用程序主要是对列表进行循环,并且循环时候进行插入或者删除操作,LinkedList对象要远优于ArrayList对象;...
AOP的底层实现
一、Srping框架的AOP技术底层也是采用的代理技术,代理的方式提供了两种 二、代理模式 1、jdk动态代理 2、CGLIB字节码增强 一、Srping框架的AOP技术底层也是采用的代理技术,代理的方式提供了两种 1. 基于JDK的动态代理 必须是面向接口的,只有实现了具体接口的类才能生成代理对象 2. 基于CGLIB动态代理 ...
block的底层实现
1、我们都会使用 block ,但是它真正是如何工作的呢?换句话说block的本质是什么? 看下列实例,想想程序的结果:int main(int argc, const char * argv[]) { int a = 10; __block int b = 20; void (^block)() = ^(){ printf("a = %d\n",a);
UDF 底层实现
用户自定义函数 继承UDF,重写evaluate方法即可  以 length 为例 例子如下 import org.apache.hadoop.hive.ql.exec.UDF; public class MD5Hash extends UDF { public String evaluate(String in) { // 请在此实现 } } hive 怎么调用呢 h...
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件