![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言知识
yujie_li
这个作者很懒,什么都没留下…
展开
-
C中函数指针的使用(包含对typedef用法的讨论)
关于C++中函数指针的使用(包含对typedef用法的讨论)(一)简单的函数指针的应用。//形式1:返回类型(*函数名)(参数表)char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } 第一行定义了转载 2013-12-06 12:30:03 · 463 阅读 · 0 评论 -
C语言中使用静态函数
C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。 4)栈——增长方向:自顶向下增长;自动变量以转载 2013-12-25 17:04:20 · 636 阅读 · 0 评论 -
理解复杂的C声明 const, typedef , 函数指针
让我们从一个非常简单的例子开始,如下: int n; 这个应该被理解为“declare n as an int”(n是一个int型的变量)。 接下去来看一下指针变量,如下: int *p; 这个应该被理解为“declare p as an int *”(p是一个int *型的变量),或者说p是一个指向一个int型变量的指针。我想在这里展开讨论一下:我觉得在声明一个指针(或引用)转载 2013-12-25 11:00:44 · 650 阅读 · 0 评论 -
结构体的嵌套与报地址取值
如struct a{ char * str1; char * str2; struct b structb;}struct b{ char * str3; char * str4;} 如果知道structb的首地址,则可以用指向指针的指针+偏移量来计算出任意一个成员的地下一原创 2013-12-23 15:22:35 · 871 阅读 · 0 评论 -
函数指针
使用函数指针的好处在于,可以将实现同一功能的多个模块统一起来标识,这样一来更容易后期的维护,系统结构更加清晰。或者归纳为:便于分层设计、利于系统抽象、降低耦合度以及使接口与实现分开先给你举个例子吧,函数指针的写法int *p;int a;p=&a; //这是一般整型指针#include using namespace std;int arr(int a,int b)转载 2013-12-14 17:00:19 · 400 阅读 · 0 评论 -
C语言小知识--持续更新
1.函数中,变量的定义必须全部放在函数体的最前面,之后才能放函数调用,否则会编译出错的原创 2013-12-13 17:20:42 · 624 阅读 · 0 评论 -
C语言实现抽象工厂模式实例
借助于宏定义可以实同抽象工厂模式,而且代码简少。如:struct ems_class{ char *name; rt_int16_t flag; rt_int16_t size; ems_type_t family; ems_handler_t handler;};#define DECLARE_CLASS(name) _dec原创 2013-12-05 18:24:04 · 656 阅读 · 0 评论 -
extern使用方法总结
extern 在源文件A里定义的函数,在其它源文件里是看不见的(即不能访问)。为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明: extern 函数原型; 这样,在源文件B里也可以调用那个函数了。 注意这里的用词区别:在A里是定义,在B里是声明。一个函数只能(也必须)在一个源文件里被定义,但是可以在其它多个源文件里被声明。定义引转载 2013-12-11 15:47:05 · 406 阅读 · 0 评论 -
以复杂结构体为参数在子函数中进行赋值,并返回值给主函数
问题:以复杂结构体为参数在子函数中进行赋值,并返回值给主函数解决关键:这种情况下只要保证实参和形参指向同一个地址就可以了。即传递结构体地址给子函数--结构体名即存放的结构体地址struct dfs_fd *d;//此时还没有地址d = fd_get(fd);//有地址啦result = dfs_file_open(d, file, flags);//可以在子函数中修改并返回了啦!!!原创 2013-12-11 15:15:10 · 1556 阅读 · 0 评论 -
const char * 转换为 char *
const char * 转换为 char *指向const的指针不能被赋给指向非const的指针,所以应该用strcpy,也就是另开一块内存,把字符一个个复制过去const char *expr = "goodidea";char *buf = new char[strlen(expr)+1];strcpy(buf, expr);strcpy 原型:extern c转载 2013-12-09 14:36:34 · 1084 阅读 · 2 评论 -
C语言栈、堆和静态区
静态区:保存自动全局变量和static 变量(包括static 全局和局部变量)。 静态区的内容在总个程序的生命周期内都存在,由编译器在编译 的时候分配。栈: 保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束, 这些内容也会自动被销毁。其特点是效率高,但空间大小有限。堆:转载 2013-12-07 09:31:46 · 432 阅读 · 0 评论 -
#define用法以及#define和typedef区别
#define用法以及#define和typedef区别1.简单的define定义#define MAXTIME1000 2.define的“函数定义”define可以像函数那样接受一些参数,如下#define max(x,y) (x)>(y)?(x):(y);因为这个“函数”没有类型检查,就好像一个函数模板似的,没有模板那么安全就是了。但是这样做的话存在隐患,例子如下转载 2013-12-07 11:16:37 · 466 阅读 · 0 评论 -
C++内存管理学习堆和栈
一 C++内存管理 内存分配方式 在讲解内存分配之前首先要了解程序在内存中都有什么区域然后在详细分析各种分配方式 C语言和C++内存分配区 下面的三张图图图是一种比较详细的C语言的内存区域分法图是典型的C++内存分布图简单易懂;以下内存分配图区别就是图和则分为初始化和未初始化静态变量区图中是全局变量区 C语言(图和图)(由地地址到高地址) a)正文段用来存放程转载 2013-12-07 09:33:04 · 387 阅读 · 0 评论 -
C语言堆栈入门——堆和栈的区别
C语言堆栈入门——堆和栈的区别原文:http://student.csdn.net/link.php?url=http://www.top-e.org%2Fjiaoshi%2Fhtml%2F427.html格式和部分内容稍作修改。在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一转载 2013-12-07 09:22:43 · 491 阅读 · 0 评论 -
变量生存期图
原创 2013-12-27 13:38:14 · 419 阅读 · 0 评论