![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c程序设计语言
文章平均质量分 86
鱼思故渊
这个作者很懒,什么都没留下…
展开
-
C专家编程--指针和数组(三) 值传递 指针传递 引用传递
http://blog.csdn.net/yusiguyuan/article/details/12357381http://blog.csdn.net/yusiguyuan/article/details/12357457而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~下文会通过例子详细说明哦值传递:形参是实参的原创 2013-10-06 21:02:44 · 4770 阅读 · 0 评论 -
C专家编程--数组和指针如何被编译器修改的
实参 所匹配的形式参数数组的数组 char c[8][10];(有步长,10char) char(*)[10]; 数组指针指针数组 char *c[15];(无步长) char **c; 指针的指针 数组指针原创 2013-10-06 21:11:13 · 1215 阅读 · 0 评论 -
C专家编程--指针与数组(二) 数组 指针 联系
聊过数组和指针的区别,主要是对于数组和指针在内存中的访问方式加以区分,这篇博文则从更深层的角度剖析数组和指针的联系如果你也对底层感兴趣、我向这篇文章会对你有所帮助,什么时候数组和指针相同(When an Array Is a Pointer )在实际应用中,他们可以互换的情形要大大多于不能互换的情形。首先再回顾一下声明和定义,(上一篇中有提到这里在深入一下)声明本身还可以进一步分为原创 2013-10-06 20:58:41 · 1447 阅读 · 0 评论 -
C专家编程--指针和数组(四) 指针对数组的访问
首先,我要说明的,在C语言中,把“多维数组”叫做“数组的数组”更好理解一下。(下面我就统一称之为“数组的数组”)有的教程中喜欢将数组的数组用矩阵表示,不过我更趋向于直线表示,如下图(定义数组的数组int ga[2][3][5]) (如果图片太小,建议保存到电脑上对其放大查看)我对数组的数组的理解(以ga[2][3][5]为例): 即为数组的数组,数组里面包含数组,数组作为另一个数组的原创 2013-10-06 21:05:11 · 1777 阅读 · 0 评论 -
C语言符号优先级
优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号(表达式)/函数名(形参表) .成员选择(对象)对象.成员名转载 2013-10-06 09:20:46 · 1388 阅读 · 0 评论 -
C专家编程--数组与指针(一)数组 指针 访问方式 区别
数组和指针经常出现于编程语言中、也许上课的时候老师也说过数组和指针有区别、参考书上也应该讲过,你是不是也不曾透彻的理清过?这篇博文主要从内存和编译的角度指出了数组和指针在访问方式上的区别、至于他们在函数调用的区别、以及它们的联系将在下一篇中详细讨论。 为了说的清楚些、会先说一些基础的部分、如果你已经掌握大可跳过What's a Declaration? What's a Defin原创 2013-10-06 20:52:10 · 2249 阅读 · 0 评论 -
C专家编程--总结
开始读《C专家编程》之前,有一个很担心的问题:94年出的讲语言的书,在现在(2012)还有多少是适用的。因此,一边读,一边用VS2010做实验。最后发现大部分内容都还在用。读完后,觉得最精彩的部分有二:一是讲解如何理解声明,二是深入地讲解数组名与指针。下文是将看书过程中所做的笔记进行的整理。p.s: 以下代码均在VS2010测试过 1. 使用无符号数时要特别注意(不推荐使用无符号数)原创 2013-10-06 21:09:51 · 1195 阅读 · 0 评论 -
C专家编程--运行时数据结构
这篇博文主要内容是程序运行时的数据结构,包括运行时程序中的不同部分如何分配内存、函数调用的内存实现、还介绍了一个c独有的强大功能,一个被称为“展开堆栈”(unwinding stack)的技术 运行时 数据结构,中间的空格是特意留出的,运行时可以认为是程序执行的一个状态,一般有编译时,运行时等,他们都是表示一个处理状态。编程语言的的经典对立之一就是代码和数据的区别。代码和数据的原创 2013-10-07 14:04:57 · 1803 阅读 · 0 评论 -
字符串指针和字符串数组的区别
用字符数组和字符指针变量都可实现字符串的存储和运算。但是两者是有区别的。在使用时应注意以下几个问题:1. 字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。2. 对字符串指针方式char *ps="C Language";转载 2013-10-08 09:10:39 · 1562 阅读 · 0 评论 -
C程序设计语言--宏定义
1.防止一个头文件被重复包含 [cpp] viewplaincopyprint?#ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2.重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 [cpp] vie原创 2013-10-08 18:41:37 · 2485 阅读 · 3 评论 -
线程私有存储空间--pthread_key_t
熟悉linux线程开发的人都清楚,一个进程中线程直接除了线程自己的栈和寄存器之外,其他几乎都是共享的,如果线程想维护一个只属于线程自己的全局变量怎么办?线程的私有存储解决了这个问题。 下面说一下线程存储的具体用法。创建一个类型为 pthread_key_t 类型的变量。调用 pthread_key_create() 来创建该变量。该函数有两个参数,第一个参数就是上面声明的原创 2014-03-22 11:26:03 · 9842 阅读 · 1 评论 -
一个多线程的死锁和锁争用的例子
在多线程编程中,为了保持同步,需要使用互斥锁保护临界区,但是多线程共同使用互斥锁的时候会造成死锁或者锁争用的情况:死锁:产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可原创 2014-03-25 09:14:29 · 5978 阅读 · 0 评论 -
C程序设计语言--全局/局部变量、头文件、堆栈空间、静态变量
一、全局变量二、头文件的规范使用 为了头文件不被重复引用,在头文件的开始需要使用一定的规范约束。多重包含在绝大多数情况下出现在大型程序中,它往往需要使用很多头文件,因此要发现重复包含并不容易。要解决这个问题,我们可以使用条件编译。如果所有的头文件都像下面这样编写:#ifndef _HEADERNAME_H#define _HEADERNAME_H...#end原创 2013-10-05 10:08:23 · 2516 阅读 · 1 评论 -
C程序设计语言--全局变量的认识
全局变量是C语言语法和语义中一个很重要的知识点,首先它的存在意义需要从三个不同角度去理解:对于程序员来说,它是一个记录内容的变量(variable);对于编译/链接器来说,它是一个需要解析的符号(symbol);对于计算机来说,它可能是具有地址的一块内存(memory)。其次是语法/语义:从作用域上看,带static关键字的全局变量范围只能限定在文件里,否则会外联到整个模块和项目中;从生存期来看,原创 2013-10-03 18:26:13 · 1394 阅读 · 0 评论 -
C程序设计语言--缓冲、常见的问题
C语言中你经常没意识到的问题1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?123456789101112#include #include intmain() { while(1) { fprintf(stdout,原创 2013-10-03 18:24:50 · 1625 阅读 · 0 评论 -
如何学好C语言
这是一篇很好的文章,能给人一种醍醐灌顶的感觉,同时作者也是很有名的CSDN博主,引用在此,共勉!!!有人在酷壳的留言版上询问下面的问题keep_walker:今天晚上我看到这篇文章。http://programmers.stackexchange.com/questions/62502/small-c-projects我也遇到了和提问的老外一样的问题。。能给像遇到这转载 2013-10-03 09:29:47 · 1059 阅读 · 0 评论 -
C程序设计语言--指针与数组(一)
关于这方面的文章,网上早就有人总结的非常完整了,但是还是想从自己的角度去分析下。 指针是一种保存变量地址的变量。在ANSI C中使用类型void*(指向void的指针)代替char *作为通用指针的类型。一元运算符&可用于取一个对象的地址,因此,下列语句:p=&c;将把c的地址赋值给变量p,我们称p为“指向”c的指针。地址运算符&只能应用于内存中的对象,既变量与数组元素。它不能作用与表达原创 2013-10-04 10:03:10 · 1630 阅读 · 0 评论 -
C程序设计语言--指针与数组(二) 指针数组 数组指针 函数指针 指针函数
关于指针、函数、数组交叉以后的各种解释一、指针函数: 指针函数是指带指针的函数,即本质是一个函数。我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。其定义格式如下所示: 返回类型标识符 *返回名称(形式参数表) { 函数体 } 返回类型可以是任何基本类型和复合类型。返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回原创 2013-10-04 13:35:21 · 1653 阅读 · 0 评论 -
得到数组的最后一个数的趣味实现
直接上代码,然后解释#include int main(){ printf(" 得到数组的最后一个数的趣味实现 \n"); printf(" - http://blog.csdn.net/morewindows/article/details/10022147 -\n"); printf(" -- By MoreWindows( http://blog.csd转载 2013-10-04 15:25:32 · 1265 阅读 · 0 评论 -
冒泡排序的三种实现
冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。 按照定义很容易写出代码:[cpp] view plainc转载 2013-10-04 15:55:49 · 1158 阅读 · 0 评论 -
C程序设计语言--输入/输出
首先拿这本书“开刀”,随便挑一章解析,精读!!! 这里的输入/输出介绍的是标准库,讲述一些输入/输出函数、字符串处理函数、存储管理函数与数学函数,以及其他一些C语言程序的功能,重点为输入./输出。在前一些列的文章中,分别介绍了文件I/O,标准I/O库,高级I/O,当然这些都是和系统相关的,这里仅仅是标准库中的I/O。一、标准输入/输出 这是从语言的角度分析I/O,但是在前面原创 2013-10-03 10:23:23 · 2377 阅读 · 0 评论 -
C语言程序设计--函数和程序结构
ANSI表征对C语言所作的最明显的修改是函数声明与函数定义这两个方面。当然,这也只能从宏观上讲解其中的奥妙。在这里使用了getline函数int getline(char s[],int lim){ int c,i; while(--lim>0&&(c=getchar())!=EOF&&c!='\n') s[i++]=c; if(c原创 2013-10-04 12:19:24 · 2034 阅读 · 0 评论 -
EOF \n \0 NULL 之间的区别
第一个问题是EOF 它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。 int c; while ((c = fgetc(fp)) != EOF) { putchar (c);转载 2013-10-04 16:38:39 · 6755 阅读 · 0 评论 -
C程序设计语言--变量在内存中的分布 堆、栈、数据段、bss段、文本段
为了弄清楚这个问题,先看看在C语言中变量的分类首先查看这篇文章。一、linux的进程内存分布 1)主要是由从小到大的地址空间分布,从低地址到高地址依次是:文本段(text),数据段,BSS段,堆,栈。文本段:文本段中存放的是代码,只读数据,字符串常量(我们通常说保存在文字常量中,实际就是在文本段)数据段:数据段用来存放可执行文件中已经初始化的全局变量,全局变量又可细分为全原创 2013-10-05 11:51:24 · 3620 阅读 · 0 评论 -
C程序设计语言--格式化输入/输出 sprintf fprintf sscanf snprintf
格式化输入输出1. fprintf(格式化输出数据至文件)相关函数 printf,fscanf,vfprintf表头文件 #include定义函数 int fprintf(FILE * stream, const char * format,.......);函数说明 fprintf()会根据参数format字符串来转换并格式化数原创 2013-10-04 16:15:50 · 3566 阅读 · 0 评论 -
C程序设计语言--指针与数组(三)常量指针 指针常量
其实这个概念比上篇文章中的概念好理解的多。其实简单一点讲,“常量指针”所指向的地址上的数据是常量,而“指针常量”所指向的地址是常量,地址上面的数据是可以变化的。常量指针,就是指向常量的指针,关键字 const 出现在 * 左边,表示指针所指向的地址的内容是不可修改的,但指针自身可变。指针常量,指针自身是一个常量,关键字 const 出现在 * 右边,表示指针自身不可变,但其指向的地址的原创 2013-10-04 14:50:51 · 1798 阅读 · 0 评论 -
标准C++ 中STL 类的简单介绍
SGI -- Silicon Graphics[Computer System] Inc.硅图[计算机系统]公司.STL -- Standard Template Library标准模板库。 容器的概念所谓STL容器,即是将最常运用的一些数据结构(data structures)实现出来。容器是指容纳特定类型对象的集合。根据数据在容器中排列的特性,容器可概分为序列式(seque原创 2013-12-31 10:13:35 · 1966 阅读 · 0 评论