
C语言
文章平均质量分 65
一只会敲代码的喵
这个作者很懒,什么都没留下…
展开
-
对于const,static和extern的理解
const在英文中表示 常量,不同的位置有不同的意义 int * const p=a 是指p是const,则p就固定了一直指向a,p的大小即a的位置不变,但a的大小可以变 ,int * const是常量指针,即这个指针是常量,指针大小不变。 const int* p=a 是指 a的值是不改变的,但p可以变化, const int*是指针常量,表示指针指向的数是一个常量。原创 2016-04-05 10:09:19 · 348 阅读 · 0 评论 -
C中引用重名的全局变量
#include int a = 10; int main(){ int a = 20; printf("%d\n", a); return 0; } a的值为20,那么int a=20这句话,它是将全局变量a的值改变了吗?其实并不是,全局变量a的值并没有变化,看下例#include int a = 10; int main(){ int*p = &a; int a = 20;原创 2016-11-01 15:36:37 · 963 阅读 · 0 评论 -
fgets函数
fgets(char * buf,int n,FILE* fp)函数在从fp中最多读取n个字符存储到buf指定的内存中,当一直没有遇到\n换行符时,则读取n-1个字符,最后补上\0;当遇到了\n时,则先将\n读入缓冲区,再读入\0,结束。 gets(char* buf)从标准输入读取一行,但是不安全,因为没有指定最多字符的大小,如果标准输入非常的大,则会造成缓冲区越界,段错误。原创 2016-10-18 16:05:22 · 365 阅读 · 0 评论 -
字符数组和字符串指针在内存中存储
#include #include char* strcpy1(){ char *p = "hello kitty"; printf("%s\n", p); return p; } int main(){ printf("%s", strcpy1()); return 0; } 字符串在内存中存储在只读数据段,当定义一个字符串指针时,该指针指向这个只读区域,即使在函数中将这个指针返回原创 2016-11-07 16:53:13 · 5659 阅读 · 1 评论 -
对linux中signal()函数的理解
信号可以看做程序运行期间的一种软件中断,信号是异步的,也就是说对于进程运行而言信号的发生是随机的,每当有信号产生时,进程会立即处理该信号。 人们可以通过键盘组合来发送特定的信号,比较重要的有: SIGINT 2 采用ctrl+c产生该信号 SIGQUIT 3 采用ctrl+\产生该信号 SIGKILL 9 采用kill -原创 2016-06-12 21:11:23 · 1012 阅读 · 0 评论 -
几大常用头文件stdio.h,stdio.h ,stdbool.h里的定义
C 标准库 - 简介 stdio .h 头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出。 库变量 下面是头文件 stdio.h 中定义的变量类型: 序号 变量 & 描述 1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 2 FILE 这是一个适合存储文件流信息的对象原创 2016-05-09 10:58:09 · 5352 阅读 · 0 评论 -
对静态库,共享库,动态加载库的理解
转载来源:http://blog.sina.com.cn/s/blog_8f3985400100uw5k.html 在上面原文基础上整理了一下,主要突出了重点内容。 库文件一般就是编译好的二进制文件,用于在链接阶段同目标代码一起生成可执行文件,或者运行可执行文件的时候被加载,以便调用库文件中的某段代码。它与可执行文件相同之处是:两者都是编译好的二进制文件(本文中我们讨论转载 2016-05-18 21:15:52 · 3453 阅读 · 0 评论 -
关于内存对齐#pragma pack( n )和__declspec( align(#) 的理解
有问题欢迎指正 关于内存对齐,是程序员指定将内存中数据放在“对齐”的位置上,这虽然造成了部分的内存空间的浪费,但可以提高计算机的速度。 这个“对齐”的位置,就是指可以被一个数整除的地址,这个数叫做“对齐参数”,一般是1,2,4,8,16……具体这个参数的选取就要用到#pragma pack( n )和__declspec( align(#) 中的n,#以及数据本身所占字节的大小,比如char=原创 2016-04-18 16:43:44 · 1214 阅读 · 3 评论 -
对模拟登陆代码的理解
#include #include int main() { char buf[10] = {}; int num = 0; for (num = 1;num <= 3;num++) { printf("请输入用户名:"); fgets(buf, 10, stdin); if (strlen(buf) == 9 && buf[8] != '\n') { scan原创 2016-05-29 17:53:07 · 268 阅读 · 0 评论 -
Linux makefile 教程
转载来源 http://blog.youkuaiyun.com/liang13664759/article/details/1771246 最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。 于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。 后记转载 2016-05-14 12:02:01 · 400 阅读 · 0 评论 -
FILE文件流的中对fopen、fseek、fread、fwrite,fprintf、fputs、fgets的理解
目前课题中使用,记录下来方便以后查看。 fopen fopen函数用来打开一个文件,其调用的一般形式为: FILE * fopen(const char * path,const char * mode); fopen()函数中第一个形式参数表示文件名, 可以包含路径和文件名两部分。如: "B:TEST.DAT" "C://TC//TES原创 2016-04-07 20:50:14 · 1701 阅读 · 1 评论 -
C语言里的内存分配以及堆栈的理解
关于C里的内存分配问题,网上版本不一,个人总结了一下,有问题请指正。 内存从上到下最开始是栈区:总是说堆栈,但是堆和栈是两个完全不同的结构,栈区的数据存储与别的区不同是由上到下存储的,最开始进栈的地址最高,依次向下递减。栈区存储的主要是局部变量,它具有先进后出的特性,最先进来的数据要到最后才能取出来,所以我们在函数调用的时候,第一个进栈的是调用函数里被调用函数的下一条语句的初始地原创 2016-04-08 16:00:35 · 740 阅读 · 8 评论 -
关于C语言的fprintf与fwrite使用区别
转:http://blog.youkuaiyun.com/godenlove007/article/details/7721647 C语言把文件看作一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称为文本(text)文件,它的每个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内在中的存储形式转载 2016-11-15 16:29:46 · 395 阅读 · 0 评论