![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
一纸浅墨
这个作者很懒,什么都没留下…
展开
-
C——extern
在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。 1. extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。这里需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到v,不只是取决于在a.c中声明e转载 2016-11-03 21:33:13 · 126 阅读 · 0 评论 -
C——数组指针与指针数组
数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 如要将二维数组赋给一指针,应这样赋值: int a[3][4]; int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a; //转载 2016-11-16 21:47:43 · 266 阅读 · 0 评论 -
C——static 的作用
在C语言中,它的作用有三条。(1)第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = ‘A’; // global variable void msg() { printf(“Hello\n”);原创 2016-11-02 19:12:47 · 186 阅读 · 0 评论 -
C——野指针
野指针:未经初始化的指针,因为是一个局部变量,存储于栈空间,地址由系统随机分配。易造成内存泄漏错误,程序编译执行时出现的段错误原因之一便是由于在程序中存在野指针。如何避免野指针?养成良好的编码规范: (1)、当指针未确定指向时,要将其初始化为空:NULL(零地址,不能对其进行操作和赋值),这样能够在出现段错误时引起编程人员的注意,以便发现问题。 (2)、当向指针指向的内存空间赋值时,原创 2016-11-14 22:35:37 · 300 阅读 · 0 评论 -
C——结构体
结构(struct) 结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 1. 结构说明和结构变量定义 在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此, 象其它 类型的变量一样, 在使用结构变量时要先对其定义。 定义结构变量的一般格式为: struct 结构转载 2016-11-18 22:04:23 · 209 阅读 · 0 评论 -
C——volatile
volatile的主要作用是:提示编译器该对象的值有可能在编译器未监测的情况下被改变。 volatile类似于大家所熟知的const也是一个类型修饰符。volatile是给编译器的指示来说明对它所修饰的对象不应该执行优化。volatile的作用就是用来进行多线程编程。在单线程中那就是只能起到限制编译器优化的作用。所以单线程的童鞋们就不用浪费精力看下面的了。没有volatile的结果转载 2016-11-22 17:41:08 · 244 阅读 · 0 评论 -
C——可变参数“...”
可变参数的宏一般在调试打印Debug 信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC 也支持可变参数宏, 但是两种在细节上可能存在区别.VA_ARGSVA_ARGS 将”…” 传递给宏.如 #define debug(format, …) fprintf(stderr, fmt, VA_ARGS)在GCC中也支持转载 2016-11-22 17:44:01 · 276 阅读 · 0 评论 -
C——通讯录实例
C语言的学习即将告一段落,上周老师让我们应用链表来编写一个通讯录小项目,因为当时尚未学习文件操作的有关内容因此无法实现信息的保存,现在我们需要在原有的基础上进行修改实现文件的保存与读取,但是,学过文件操作后依然对如何实现这一功能毫无头绪,因此在网上搜索了他人写的一些程序,作为参考。#define _CRT_SECURE_NO_WARNINGS 1 //消除scanf不安全的警告#i转载 2016-12-06 21:26:10 · 312 阅读 · 0 评论 -
将两个文档数字相加添加到第三个文档
1.txt begin 10 11 12 20 21 22 30 31 32 end2.txt begin 15 16 17 25 26 27 35 36 37 end#include <stdio.h>#include <stdlib.h>int main(){FILE *fp1;FILE *fp2;FILE *fp3;char ch1;char ch2;ch转载 2016-12-06 21:33:59 · 414 阅读 · 0 评论 -
通讯录
实现了通讯录的录入信息、保存信息、插入、删除、排序、查找、单个显示等功能。。完整的代码如下:#include <stdio.h>#include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针//#include <string.h>#include <stdlib.h> //标准库函数// #define NULL 0#define LEN sizeof(s转载 2016-12-06 21:48:39 · 267 阅读 · 0 评论 -
C——指针与数组名的区别
昨天晚上做了一套企业面试题,第一题便是“数组名与指针的区别”做了才知道自己知之甚少,学长说像这样的题纸上那点地方是不够用的,而我们能写出来的仅仅是两三行而已。所以特地在网上搜了一下。指针和数组名的共同特点是都是用来指代一个地址的。不同的是:1、指针是需要占用内存空间来存储地址的;数组名则更像是一个立即数或者常数。你可以修改指针指向的内容,但你绝对无法改变数组名的指向。2、数组和指针对于sizeof来转载 2016-11-24 21:27:14 · 569 阅读 · 0 评论 -
链表基本操作
内容包括链表的创建,增加、删除节点,链表的逆序、排序和销毁等。#include转载 2016-11-24 21:41:27 · 227 阅读 · 0 评论 -
C----calloc/ralloc/malloc
首先要了解C语言跟内存分配方式 c语言内存有4G空间,其中1G分配给内核,3G分配给用户,其中3G空间又划分为栈空间,堆空间,数据段以及代码段, 下面先说下各个空间各自的存储内容 (1)数据段。里面包括bss(保存为初始化的全局变量),rodata(保存常量),.data(静态数据区,里面全局变量,static修饰变量)。 内存在程序编译的时候就已经分转载 2016-11-16 21:43:18 · 266 阅读 · 0 评论 -
如何在C中实现面向对象
(1)类的实现在面向对象思想的表述中,类是对现实世界事物的抽象表述。在c++和java的语法中用关键字class来表示面向对象的类。那么很明显的在c语言的语法中结构体struct和类的表述最为接近,故我们使用c的关键字struct定义结构体来表述对应的类。根据面向对象的思想抽象出具体事物的属性作为结构体struct的成员变量。(2)类的封装对于java编程实践有一个基本的原则,一个文件实现一个类,转载 2016-10-31 21:54:13 · 338 阅读 · 0 评论 -
C——函数
编译环境OS: Axianux 1.0 Compiler: gcc 3..2.3Linker: Solaris Link Editors 5.x Debug Tool: gdb Editor: vi最简C代码分析为简化问题,来分析一下最简的c代码生成的汇编代码: # vi test1.cint main(){ return 0;} 编译该程序,产生二进制文件:转载 2016-11-11 22:40:53 · 212 阅读 · 0 评论 -
C——堆与栈
一、预备知识——程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static)—转载 2016-11-03 21:35:59 · 146 阅读 · 0 评论 -
C--字符串
已经有两三年没有碰过C了!报了苏嵌要一周内看完一本C语言书籍!宝宝表示压力真的好大啊!可是男人嘛,自己选的路跪着都要走完,好了废话少说,开始检验自己今天所学内容—-字符串。 1,简介 字符串就是一个或多个字符的序列。如“”hello word!“” 双引号“”不是字符一部分,他是通知编译器其中包含了一个字符串,就如‘’标志着一个字符一样。 C中原创 2016-10-25 21:54:14 · 205 阅读 · 0 评论 -
C----printf()
一、常用转换说明符 %a或%A 浮点数,十六进制数和p-计数法; %c 一个字符 %d或%i 有符号十进制数 %e或%E 浮点数,e-计数法 %f 浮点数、十进制计数 %o 无符号原创 2016-10-26 23:02:43 · 207 阅读 · 0 评论 -
C——变量
1.语言中变量的实质内存只不过是一个存放数据的空间,就好像我 的看电影时的电影院中的座位一样。每个座位都要编号,我们的内存要存放各种各样的数据,当然我们 要知道我们的这些数据存放在什么位置吧!所以内存也要象座位一样进行编号了,这就是我们所说的内 存编址。座位可以是按一个座位一个号码的从一号开始编号,内存则是按一个字节一个字节进行编址, 如上图所示。每个字节都有个编号,我们称之为内存地址。好了,我说了转载 2016-11-07 21:45:00 · 194 阅读 · 0 评论 -
C———位运算总结
位运算应用口诀 清零取反要用与,某位置一可用或 若要取反和交换,轻轻松松用异或移位运算 要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 “<<” 左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。 3 “>>”右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机转载 2016-11-07 21:46:02 · 199 阅读 · 0 评论 -
C——位运算简介及实用技巧
二进制中的1有奇数个还是偶数个 我们可以用下面的代码来计算一个32位整数的二进制中1的个数的奇偶性,当输入数据的二进制表示里有偶数个数字1时程序输出0,有奇数个则输出1。例如,1314520的二进制101000000111011011000中有9个1,则x=1314520时程序输出1。 var i,x,c:longint; begin readln(x); c:转载 2016-11-07 21:49:56 · 377 阅读 · 1 评论 -
C----函数指针
1.函数指针定义 函数类型 (*指针变量名)(形参列表); “函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。 例如: int (*f)(int x); double (*ptr)(double x); 在定义函数指针时请注意:函数指针和它指向的函数的参数个数和类型都应该是—致的; 函原创 2016-10-27 20:25:36 · 143 阅读 · 0 评论 -
C学习笔记
**1、if语句** 形式1:if(expression) statement ; expression为真执行statement语句。 形式2:if(expression) statement 1; else statement2 ; expression为真执行1;否则执行语句2、形式3:if(条件1) 语句1; else if(条件2) 语句2;原创 2016-10-28 22:24:49 · 180 阅读 · 0 评论 -
C语言函数指针的几种用法
程序如下: #include转载 2016-10-29 22:33:44 · 358 阅读 · 0 评论 -
C——struct
在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子: struct stu{ char *name; //姓名转载 2016-11-10 20:05:41 · 246 阅读 · 0 评论 -
队列的方式与实现
1、队列的定义队列(Queue):也是运算受限的线性表。是一种先进先出(First In First Out ,简称FIFO)的线性表。只允许在表的一端front进行插入,而在另一端rear进行删除。 队首(front) :允许进行删除的一端称为队首。 队尾(rear) :允许进行插入的一端称为队尾。 例如:排队购物。操作系统中的作业排队。先进入队列的成员总是先离开队列。转载 2016-12-19 22:18:08 · 282 阅读 · 0 评论