![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
ShadWalker
这个作者很懒,什么都没留下…
展开
-
C语言第1课——static存储类
一、static修饰的变量1. 全局静态变量 在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量。 1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在) 2)初始化:未经初始化的全局静态变量会被程序自动初始化为0(自动对象的值是任意的,除非他被显示初始化) 3)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始...原创 2018-11-19 22:12:49 · 1135 阅读 · 0 评论 -
C语言第17课——socket编程
1. TCP/IP协议传输控制/网际协议,又叫网络通信协议。实际上,它包含上百个功能的协议,如ICMP(互联网控制信息协议)、FTP(文件传输协议)、UDP(用户数据包协议)、ARP(地址解析协议)等。TCP负责发现传输的问题,一旦有问题就会发出重传信号,直到所有数据安全正确的传输到目的地。 2.套接字(socket)在网络中用来描述计算机中不同程序与其他计算机程序的通信方式。s...原创 2018-12-02 16:12:38 · 485 阅读 · 0 评论 -
C语言第15课——头文件
头文件头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。 stdio.h 头文件,它是编译器自带的头文件。引用头文件相当于复制头文件的内容。A simple practice in C 或 C++ 程序中,建...原创 2018-11-26 16:23:40 · 400 阅读 · 0 评论 -
C语言第14课——预处理器
预处理器C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。C 预处理器(C Preprocessor)简写为 CPP。所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。下面列出了所有重要的预处理器指令:指令 ...原创 2018-11-26 15:39:26 · 172 阅读 · 0 评论 -
C语言第13课——文件读写
一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件。 打开文件使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE 包含了所有用来控制流的必要的信息。FILE *fopen( const char * fi...原创 2018-11-26 15:16:52 · 946 阅读 · 0 评论 -
C语言第12课——输入&输出
输入意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。 输出意味着要在屏幕上、打印机上或任意文件中显示一些数据。C 语言提供了一系列内置的函数来输出数据到计算机屏幕上和保存数据到文本文件或二进制文件中。 标准文件C 语言把所有的设备都当作文件。所以设备(比如显示器)被处...原创 2018-11-25 15:20:54 · 572 阅读 · 2 评论 -
C语言第11课——typedof和#define
typedef可以使用它来为类型取一个新的名字。typedef unsigned char BYTE;BYTE b1, b2;按照惯例,定义时会大写字母,以便提醒用户类型名称是一个象征性的缩写,但也可以使用小写字母。使用 typedef 来为用户自定义的数据类型取一个新的名字。例如,可以对结构体使用 typedef 来定义一个新的数据类型名字,然后使用这个新的数据类型来直...原创 2018-11-25 09:24:45 · 650 阅读 · 1 评论 -
C语言第10课——共用体
共用体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。#include <stdio.h>#include <string.h>union Data //定义共用体{ int i; float ...原创 2018-11-24 21:59:27 · 1477 阅读 · 0 评论 -
C语言第8课——结构体
结构体C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。假设想要跟踪图书馆中书本的动态,需要跟踪每本书的下列属性:Title Author Subject Book ID#include <stdio.h>struct student //定义结构{ char *name;...原创 2018-11-24 21:12:10 · 212 阅读 · 0 评论 -
C语言第7课——字符串
在 C 语言中,字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};char greeting[] = "Hello";以下是 C/C++ 中定义的字符串的内存表示:字符串:%s 字符:%...原创 2018-11-24 20:47:36 · 178 阅读 · 0 评论 -
C语言第6课——函数指针
定义函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。 声明格式:类型说明符 (*函数名) (参数) int (*fun)(int x,int y);函数指针是需要把一个函数的地址赋值给它,有两种写法:fun = &Function;fun = Function;取地址运算符&不是必需的,因为一个函数标识符就表示...原创 2018-11-24 16:48:24 · 173 阅读 · 0 评论 -
C语言第5课——指针
每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:#include <stdio.h> int main (){ int var1; char var2[10]; printf("var1 变量的地址: %p\n", &var1 ...原创 2018-11-24 14:56:23 · 179 阅读 · 0 评论 -
C语言第3课——传递数组给函数
如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。 方式 1形式参数是一个指针:#include <stdio.h>double Sum(int *num, int Length);int main(){...原创 2018-11-20 10:09:56 · 40759 阅读 · 1 评论 -
C语言第4课——从函数返回数组
C 语言不允许返回一个完整的数组作为函数的参数。但是,可以通过指定不带索引的数组名来返回一个指向数组的指针。如果想要从函数返回一个一维数组,必须声明一个返回指针的函数,如下:int * myFunction(){...}另外,C 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。数组名是一个指向数组中第一个元素的常量指针。balance 是一...原创 2018-11-24 09:16:29 · 7080 阅读 · 1 评论 -
C语言第2课——extern存储类
extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。extern 是用来在另一个文件中声明一个全局变量或函数。注:变量默认为本地,函数默认为全局。 第一个文件:main.c实例#include <stdio.h>int count ;extern void write_extern();int main(){ ...转载 2018-11-19 22:20:03 · 1286 阅读 · 0 评论 -
C语言第16课——内存管理
内存管理内存的分配和管理函数可以在 <stdlib.h> 头文件中找到。序号 函数和描述 1 void *calloc(int num, int size); 在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。所以它的结果是分配了 num*size 个字节长度的内存空间,并且每个字节的值都是0。 2 voi...原创 2018-12-01 11:56:00 · 155 阅读 · 0 评论