C
HomeSamu
不断学习中的初学者
展开
-
C语言优先级总结
C语言优先级汇总 每次要用的时候都得自己着太不方便了,字节总结一份,用的时候看起来比较方便 网上的记忆口诀: 圆方括号、箭头一句号, 自增自减非反负、针强地址长度, 乘除,加减,再移位, 小等大等、等等不等,八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。原创 2015-08-21 13:28:27 · 1273 阅读 · 0 评论 -
C语言字符串、指针和内存问题总结
字符串:字符串变量是字符串的首地址,直到'\0'为止字符串的表示方式:1 字面值”abc”(字符串常量) 2 char *表示 3 char s[n]表示 字符串的操作 : 1 字符串的赋值原创 2015-08-22 23:22:03 · 1046 阅读 · 0 评论 -
C语言数组指针指针数组
在数组指针和指针数组这块我总是弄不清楚,总结一下指针数组:用于存储指针的数组,也就是数组元素都是指针数组指针:指向数组的指针关于这部分有一道题: 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型 这道题一开始我总是弄不清楚 正确答案:int (*a[10]) (int); C的类型原创 2015-08-22 17:03:36 · 622 阅读 · 0 评论 -
数组指针和指针数组
1、数组指针(指向数组的指针)(1)数组在内存中的表示 创建一个数组就是在内存里面开辟一块连续的空间,比如int a[4];就是在内存里面开辟了一个大小为4*sizeof(int)字节的内存空间。二维数组是特殊的一维数组。先来看一段代码:<strong><span style="font-size:16px;">void main() { int a[2][2]={1,2,3,4}转载 2015-08-20 09:50:32 · 328 阅读 · 0 评论 -
C函数返回局部变量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意转载 2015-08-21 22:17:47 · 331 阅读 · 0 评论 -
函数指针与指针函数
一、辨别指针函数与函数指针最简单的方式就是看函数名前面的指针*号有没有被括号包含,如果被包含就是函数指针 ,反之则是指针函数。1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值转载 2015-08-20 09:57:40 · 248 阅读 · 0 评论 -
回调函数
回调函数在看LWIP时,见到用回调函数,再看某老外公司OPC源代码时,见到用回调函数。看我国内某些代码(我公司软件等)时没用到。于是,我对回调函数产生了很大的好奇。以前,我写VC程序时用到过回调函数,但是没有用C语言来使用。最近,看到国外大量的经典代码中广泛使用了回调函数(LWIP、某两个公司的OPC程序等),都是C语言来实现的,而不是VC windows程序中别人实现自己使用的那种。 为了弄明白转载 2015-08-20 09:29:23 · 285 阅读 · 0 评论 -
C语言数组与指针详解
1. 晕指针,唐式偏方一:“投石问路”#include int main(void){ char* str = "ABCDEFGHIJKL"; int* pInt = (int*)str; printf("%c\n%c\n",*(str+1),*(char *)(pInt+1));转载 2015-08-20 10:50:20 · 488 阅读 · 0 评论 -
进程内存空间的划分(代码区,全局区,BSS段,栈区,堆区,只读常量区)
进程的内存空间划分:6个部分代码区、只读常量区、全局区、BSS段、堆、栈 代码区 – 程序的代码(以函数的形式)存入代码区,函数指针就是函数在代码取得地址,代码区 是 只读区域. 只读常量区 – 很多的书上都把只读常量区归入代码区,存放字符串的字面值(“abc”)和const修饰的全局变量。 全局区 – 存放全局变量和static的局部变量,读写权限。 BSS段 – 存放为初始化原创 2015-08-18 12:03:21 · 4164 阅读 · 0 评论 -
关于C语言中的预处理指令
转载:http://123.57.229.44/read.php?tid=15&fid=27预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就 需要使用预处理程序。尽管在目前绝大多数编译器都包含了预转载 2015-07-24 13:53:11 · 962 阅读 · 0 评论 -
C语言 枚举(enum)、宏定义(#define)、结构体(struct)的一种联合应用
最近看到一种枚举、宏定义、结构体联合的应用,对我这种初学者很有帮助,所以总结一下记录在这,为以后方便查阅,有需要的朋友也可以做一个参考.实际操作就是用宏定义初始化接头体具体操作代码如下:#include<stdio.h>#include<stdlib.h>#include<fcntl.h>#include<string.h>typedef enum{ date_head = 0x2原创 2015-07-19 13:17:50 · 3433 阅读 · 0 评论 -
宏定义的使用详细总结
宏定义分类: 1 . 不带参数的宏定义 : #define 宏名 [宏体] 例: #define TRUE 1 2. 带参数的宏 : #define 宏名( 参数表) [宏体] 例:#define MAX(x,y) ((x)>(y)?(x):(y))原创 2015-08-22 11:23:44 · 1276 阅读 · 0 评论 -
C语言一个队列的实现
队列也是常用的数据结构之一,下面给出一个链式队列的实现~~头文件Queue.h[cpp] view plaincopy#ifndef Queue_H #define Queue_H typedef int Item; typedef struct node * PNode; typedef struct nod转载 2015-10-13 09:09:11 · 501 阅读 · 0 评论