C语言
qinghe0808
努力就是不厌其烦的重复。
展开
-
【C语言】编译链接的详细过程
相信大家在学习C语言时,肯定会有这么一个问题,计算机把一段程序转化为能识别的二进制机器语言的过程是什么? 大体的来讲需要经历四个过程:预处理,编译,汇编,链接。接下来我会给大家一一说明。首先预处理过程所做的操作是 进行程序的宏替换,去注释,头文件按照路径展开,以及条件编译。接着编译操作完成把C语言转成汇编语言。再接下来,汇编操作完成把汇编语原创 2016-11-04 22:16:32 · 8361 阅读 · 2 评论 -
【C语言】菜鸟的指针入门
一直以来,指针都是我在C语言部分的一大硬伤,因为当初基础概念弄不清楚,导致后来的听课如同听天书。今天,老师帮我们重新梳理了指针的相关知识,虽然只是一些概念性的,由于时间关系没有深入讲解,但这次我好像对指针了解一些了,以下是我的收获。理解指针: 对于int * p来说:指针的内容—— 别人的地址指针的地址—— &p指针指向的内容—— *p理解指针类型:原创 2016-09-21 20:49:05 · 1377 阅读 · 3 评论 -
【c语言】多种方法:将十进制数转化成二进制数,计算其中1的个数
以下是我学到的三种方法,如果大家还有更好的方法,可以讨论交流。首先,我们得知道十进制怎样转化成二进制,如下图。得到10的二进制数为1010那么我们会发现,10%2是判断二进制数的最后一位是0还是1,判断完成后向右移一位即10/2得到5,接着5%2判断二进制数的倒数第二位是0还是1,判断完成后向右移一位即5/2得2,重复这个过程,直到0/2结束。最终我们得到了10的二进制数1010.原创 2016-10-11 14:02:54 · 11733 阅读 · 4 评论 -
【C语言】熟悉预处理标识符和宏
此次分享的是预处理相关的知识,如有错误,请指出。1.预定义符号__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间如:printf("file:%s\tline:%d\tdata:%s\ttime:%s\n",__原创 2016-11-04 19:24:53 · 453 阅读 · 0 评论 -
【C语言】宏和函数的区别
由之前的宏的引入我们知道,宏函数可以完成一些简单的运算。那是不是宏函数就可以取代函数呢?宏函数和函数到底有哪些区别呢?下面我们来分析他们其中的区别。1.代码长度: 对于宏,每次使用时,宏代码都被插入到程序中。除了非常小的宏之外,程序的长度将大幅度增长。而对于函数,函数代码只出现在一个地方,每次使用这个函数时,都调用那个地方的同一份代码。2.执行速度: 函数的调用是需要付出原创 2016-11-04 21:42:59 · 1328 阅读 · 0 评论 -
【C语言】简单实现三子棋
今天我们来完成一个三子棋的小游戏。游戏要实现:在3*3的棋盘上进行人机对弈,玩家输入棋盘坐标下棋,电脑通过产生随机数下棋。最终,谁先完成三子相连,就是赢家。若在棋盘下满还未决出胜负,那就是平局。为了完成这个游戏,我们要建立三个文件,分别为chessboard.h chessboard.c test.c它们分别完成的任务是相关函数的声明,相关函数的实现,以及原创 2016-11-07 12:51:07 · 525 阅读 · 0 评论 -
【C语言】详解栈帧
今天我们将通过栈帧详解C程序中函数间的调用过程。栈帧是什么? 栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里等等。首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧结构,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈原创 2016-11-22 22:27:13 · 1956 阅读 · 0 评论 -
【C语言】通讯录管理系统(容量固定)
C语言——通讯录管理系统(容量大小固定)话不多说,直接上代码。tongxunlu.h#ifndef _TONGXUNLU_H_#define _TONGXUNLU_H_#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct tongxunlu{原创 2017-03-07 13:53:58 · 452 阅读 · 0 评论 -
【C语言】通讯录管理系统(容量可变)
在实现容量可变的通讯录之前,我们得想弄清楚一下几个函数。 malloc函数 函数原型: extern void *malloc(unsigned int num_bytes); 功能: 分配长度为num_bytes字节的内存块 返回值: 返回值类型是void *,所以我们可以把分配好的空间强制类型转化成你要使用的类型。如果内存分配成功则返回指向被分配内存的指针,否则返回空指原创 2017-03-07 16:39:54 · 461 阅读 · 0 评论