
C语言基础知识
文章平均质量分 64
文质彬彬online
人生苦短,我爱Python!
展开
-
回顾C语言文件里的知识
《回顾文件里的知识》今天,梁哥给我们列好了苏嵌第一阶段学习规划,感觉开心中略带一点压力,开心理所当然,有了目标,有了既定的方向,就剩下一步一个脚印扎实地走下去,这是实在应该感到开心的。重点在于那一点压力。压力来源梁哥的一句话:等我给你们讲C语言,你们会发现你们以前学的C语言就和没学过一样。哈哈,我想无论谁听了这句话都会感到有压力吧。有压力才会有动力嘛,好,废话少说,我开始我今天的主题,“C语言原创 2016-11-03 22:19:54 · 972 阅读 · 0 评论 -
回顾<string.h>中API
参考:《C标准库—中文》 在<string.h>中声明的函数是对标准C的一个重要补充,它支持C语言把文本作为字符数组操作的传统。 1、 名字以mem开头的函数对任意字符序列进行操作。其中一个参数s指向字符串的起始位置——最小下标的元素。另一个参数n对元素的个数进行计数。 2、 名字以strn开头的函数对非空字符序列进行操作。参数s和n的含义和上面的相同。这些串恰好在s[n]前结束,或者在s原创 2017-01-18 20:33:22 · 341 阅读 · 0 评论 -
typedef
引言 typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。typedef的使用方法如转载 2017-05-09 23:25:09 · 255 阅读 · 0 评论 -
读书笔记:c语言深度剖析之关键字
C语言一共有32个关键字auto 声明自动变量,缺省时一般默认为autoint 声明整型变量double 声明双精度变量long 声明长整型变量char 声明字符型变量float 声明浮点型变量short 声明短整型变量signed 声明有符号类型变量unsigned 声明无符号类型变量struct 声明结构体变量union 声明联合数据类型enum 声明枚举类型st原创 2017-07-31 22:38:43 · 476 阅读 · 0 评论 -
结构体存储方式
在做课程设计的时候发现结构体的入口地址与它的第一个元素地址相同typedef union student { char name[10]; long sno; char sex; float score [4]; } STU; void main () { STU a[5]; printf(“%d/n”,si原创 2017-08-08 18:13:35 · 2150 阅读 · 2 评论 -
C语言中使用空的宏定义的作用
在Windows网络编程中,发现Winsock2.h这个头文件中有一些空的宏,即定义了一些NULL宏,例如:#define far#define near查了一下,作用是: 1.开关作用 2.有时起到注释作用 3.有时起到方便移植的作用 (暂时想到这些)原创 2017-10-13 00:17:09 · 6434 阅读 · 2 评论 -
通信网络编程第五次作业
1、 原始套接字的主要功能是什么?课本(P138)1) 发送和接收ICMPv4、IGMPv4和ICMPv6等分组;2) 发送和接收内核不处理其协议字段的IPv4数据包;3) 控制IPv4首部。2、 原始套接字的适用场合有哪些?课本(P139)1) 特殊用途的探测应用;2) 基于数据包的捕获应用;3) 特殊用途的传输应用。3、 原始套接字的发原创 2017-11-30 19:14:40 · 1533 阅读 · 0 评论 -
通信网络编程第六次作业
1、 何谓同步与异步?它们的区别是什么?课本(P158)同步与异步这两个概念与消息的通知机制有关,和消息如何处理无关。对于消息而言,在同步的情况下,由消息处理者自己去等待消息是否被触发;在异步情况下,由触发机制通知处理者,然后进行消息处理。 2、 何谓阻塞与非阻塞?它们与同步与异步的区别是什么?课本(P158)从消息处理机制来看,套接字编程可分为阻塞和非原创 2017-11-30 19:17:58 · 1436 阅读 · 2 评论 -
通信网络编程第一次作业
1、 请指出MAC地址、IPv4、IPv6和端口各占多少位?如何获取本机的MAC地址和IP地址? IPv4的端口占32位; IPv6的端口占128位; MAC的地址占48位; 在OSI模型中,第三层网络层负责IP地址,第二层数据链路层负责MAC地址,因此一个主机会有一个MAC地址,而每个网络位置会有一个专属它的IP地址; 在系统管理界面中,使用ipconfig /all命令可以获得MAC原创 2017-12-06 20:15:27 · 1732 阅读 · 0 评论 -
通信网络编程第二次作业
1、 NAT是什么?如何实现? NAT:网络地址转换(Network Address Translation) 当在专用网络内部的一些主机本来已经分配到了本地IP地址,但又想和因特网上的主机通信时,可以使用NAT方法。 一共有三种实现方法: 1. 静态转换:将内部网络的私有IP 地址转换为共有IP地址,IP地址是一对一的,是一成不变的,某个私有IP地址只转换为某个共有IP地址; 2.原创 2017-12-06 20:18:20 · 2633 阅读 · 0 评论 -
通信网络编程第三次作业
1、 请说明C语言中堆内存是如何分配的? 用于动态分配内存,堆在内存中位于bss区和栈区之间,一般由程序员分配和释放,若程序员不释放,程序结束时,有可能有OS回收。 2、 请指出字符集与字符编码的区别?举例说明UTF-8编码。 字符集就是字符的集合,如ASCII、GBK、BIG5、Unicode等; 字符编码可以理解为定义在字符集上的映射规则。 UTF-8编码最多可用到6个字节:1字节原创 2017-12-06 20:23:53 · 2096 阅读 · 0 评论 -
通信网络编程第四次作业
1、 TCP recv函数返回值有几种?各表示什么意思? 课本(P86) 一共有4种返回值: 1. iResult == recvbuflen,接收到与缓冲区长度相等的数据,此时应对接收到的数据进行后续处理或继续调用接收函数; 2. iResult < recvbuflen,到达接收缓冲区的数据量少于接收缓冲区的长度,此时应对接收到的数据进行后续处理,或继续调用接收函数直到缓冲区满;原创 2017-12-06 20:25:50 · 2226 阅读 · 0 评论 -
C语言static常见作用
C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。 4)栈——增长方向:自顶向下增长;自动变量以及每次函数调用转载 2016-11-27 17:18:03 · 303 阅读 · 0 评论 -
字符串操作大全
数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例:#include #includeint main(void) { char string[10]; char *str1 = "abcdefghi"; stpcpy(string,转载 2016-11-27 17:15:09 · 273 阅读 · 0 评论 -
C语言预处理命令总结大全
原文链接:http://blog.chinaunix.net/uid-21411227-id-3071612.htmlC程序的源代码中可包括各种编译指令,这些指令称为预处理命令。虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境。本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性。ANSI标准定义的C语言预处理程序包括下列命令:#define,#error转载 2016-11-27 17:10:44 · 270 阅读 · 0 评论 -
C语言深度感悟(一)
C语言深度感悟(一) 在1972~1973年的一天,美国贝尔实验室发生了一件在我看来计算机软件发展历程中最为惊天动地的大事:C语言诞生了,Ken Thompson和D.M.Ritchie合作发明了C语言,之后他俩中的D.M.Ritchie又和 Brian W.Kernighan合作编写了一本被称为全球最为经典的C语言教程(虽然在笔者看来这本书写的佶屈聱牙)《C程序设计语言》原创 2016-11-06 18:27:22 · 727 阅读 · 0 评论 -
C语言对字符串的操作
重点:C语言中对字符串的熟练掌握1、 字符串遍历:(1) 计算出字符串的长度;(2) 判断字符串结束标志’\0’;2、 数组一定有确定的空间:3、 数组的输入方法:(1) scanf(“%s”,adress);(2) gets(adress);4、 数组的输出方法:(1) printf(“%s”,adre原创 2016-11-09 23:40:36 · 826 阅读 · 0 评论 -
C语言的加密输入法一:MD5加密
使用MD5加密 我们以一个字符串为例,新建一个文件filename.txt,在文件内写入hello ,然后在Linux下可以使用命令md5sum filename.txt计算md5值 ==> b1946ac92492d2347c6235b4d2611184 。虽然写入的是hello这5个字符,但是我们使用命令xxd filename.txt后可以看出文件结尾处会有个0x0a这个回车符。所以在下面原创 2016-11-29 13:11:38 · 1160 阅读 · 0 评论 -
C语言加密输入法二:使用SHA1加密
此处对openssl里的函数进行讲解//SHA1算法是对MD5算法的升级,计算结果为20字节(160位),使用方法如下://打开/usr/include/openssl/sha.h这个文件我们可以看到一些函数// 初始化 SHA Contex, 成功返回1,失败返回0int SHA_Init(SHA_CTX *c);// 循环调用此函数,可以将不同的数据加在一起计算SHA1,成功返回1,失败原创 2016-11-29 13:15:00 · 1142 阅读 · 0 评论 -
指针杀手之野指针
1、野指针的概念:随机指向内存的指针; 2、野指针的危害:造成内存泄漏,引起段错误;(有的时候会不造成内存泄漏,这种特殊情况是不能认为控制的,时好时坏令人茫然。) 3、如何避免野指针:养成良好的编码规范; (1)当指针未初始化时,要对指针进行初始化,可初始化为空; (2)当给指针指向的空间赋值时,一定要给该指针分配空间; (3)当给一个指针分配空间时,一定要检查该指原创 2016-12-03 00:56:16 · 407 阅读 · 0 评论 -
万能指针void *的今世今生
C标准定义了NULL指针,它作为一个特殊的指针变量,表示不指向任何东西。要使一个指针变量为NULL可以给它赋一个零值。为了测试一个指针变量是否为NULL,你可以将它与零值进行比较。之所以选择一个零值是因为一种源代码约定。就机器内部而言,NULL指针的实际值可能与此不同。这种情况下,编译器将负责零值和内部值之间的翻译转换。(《C和指针》P96)void*的特点:1、void *可以接受任意类型的原创 2016-12-03 01:17:08 · 747 阅读 · 0 评论 -
sizeof的特殊地位
结构体和共用体的内存分配是C语言的一个难点,也是面试题中的热点。 示例1:Union data1 { double d; int i; char c1; char c2[9]; };sizeof(union data1)的值为16.在编译器默认设置的情况下,该共用体最大基本类型为double,它占8字节,所以此共用体以8来对齐。字符数组c2占9个字节,原创 2016-12-03 01:29:15 · 338 阅读 · 0 评论 -
数组的溢出不可忽视
c问题—关于数组溢出的思考今天在做题时,发现定义整型数组a[10],并赋初值,然后我访问a[11],输出0,再a[11]=3后访问a[11],输出3,a的长度还是10,那么a[11]存在哪里了?其实原问题下的回答已经能解决题主的问题了,只是自己也有些小思考,想着好久未写博客了,分享一点关于越界访问的经验。首先,声明了int型数组a[10]的话,可知a指针指向RA转载 2016-12-03 01:32:49 · 609 阅读 · 0 评论 -
由一个整形数组的重复赋初值出错而想到的数组初始化规则
一位同学我问了一下以下代码为什么会出错,一开始我也没想明白其代码无法编译的原因。 错误代码如下:代码1#include<stdio.h>void change(int * test){ test[] = {5,6,7,8};}int main(){ int i; int test[] = {1,2,3,4}; change(test); for(i =原创 2016-12-04 21:01:01 · 616 阅读 · 0 评论 -
数组特性之我见:数组的链表特性
定义一个简单的五维整型数组 :int ppppp[2][2][2][2][2]; 如右图所示: 我在此处形象的用带有“地址”和“名字”两个属性的“坑”来表示变量,我说数组就是一个“大坑”,这个“大坑”里有层次的嵌套着一些“小坑”,而这些“小坑”和“大坑”之间是像链表一样,一环套一环的: 以上述5维数组为例,从最小的“坑”开始讲起,最小坑:ppppp[0][0][0][0][0]为一个整形变量,原创 2016-12-07 17:22:19 · 365 阅读 · 0 评论 -
C语言中的变量存储知识
个人计算机的三大重要组成部分:1、 CPU;2、 内存;(共享设备、稀缺资源)3、 硬盘; 内存与硬盘的区别:表述方法一:内存是动态存储数据的,当设备断点后所有数据消失;硬盘静态存储数据,当设备断电后数据依然原样保留;表述方法二:程序在不运行时存放在硬盘中,当程序运行时,程序会被调到内存中,此时程序变化为进程; 变量的特性1、 变量的类型;原创 2016-11-27 14:28:42 · 513 阅读 · 0 评论 -
typedef在数组、指针方面的应用
为数组定义简洁的类型名称。例如,定义三个长度为5的整型数组,int a[10],b[10],c[10],d[10];在C语言中,可以将长度为10的整型数组看作为一个新的数据类型,再利用typedef为其重定义一个新的名称,可以更加简洁形式定义此种类型的变量,具体的处理方式如下:typedef int INT_ARRAY_10[10];typedef int INT_ARRAY_20[20];INT_原创 2017-12-06 20:58:50 · 337 阅读 · 0 评论