![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c高级编程
文章平均质量分 52
叶枫其
这个作者很懒,什么都没留下…
展开
-
static变量与static的用法
1static修饰局部变量C函数中变量分为局部变量与全局变量;全局变量是在函数外申请的变量,其存储在全局数据区,其生命周期是整个程序运行的周期,局部变量是在函数中申请的变量 通常情况下存储区域是堆栈,变量是在进入函数时在堆栈中申请的,函数退出后变量将会被释放,其生命周期是函数运行的时间,再次进入函数时必须重新申请,重新初始化。使用static修饰局部变量后局部局部变量将变为局部静态变量,存储区原创 2015-09-02 22:37:55 · 460 阅读 · 0 评论 -
函数指针
函数指针函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:转载 2015-09-20 19:16:50 · 266 阅读 · 0 评论 -
volatile讲解
(一)volatile的解释volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中)转载 2015-09-21 00:42:05 · 951 阅读 · 0 评论 -
sizeof与strlen比较
sizeof定义:sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。strlen定义:strlen(char*)是一个函数,求的是字符串的实际长度,直到遇到第一个'\0',然后就返回计数值,且不包括'\0'。传给strlen(char*)的实参必须是字符串指针或者数组名;当给sizeof传递字符串指针时sizeof(p)结果转载 2015-09-13 10:52:59 · 323 阅读 · 0 评论 -
指针
一、指针是什么?指针是一个变量,该变量的值是另一个变量的地址变量int *P=&aint a=5变量值0x35df 5变量地址0x63250x53df指针变量p的值就是变量a的地址。二 指针类型指针所指向变量的类型就是指针的类型例2,有三个不同的变量:请问右边的三个运算有何转载 2015-09-03 17:14:10 · 296 阅读 · 0 评论 -
大端模式与小端模式
内存地址0x30000X30010X30020X30030X30040X3005十六进制数12345678xxxx大端模式:数据中的高位字节数据存放在地址中的低位位置,数据中的低位字节数据则存放在地址中的高位位置,是正常逻辑顺序,方便人的理解。小端模式:与大端模式相反,数据中的高位字节数据存放在地址中的高位原创 2015-09-03 13:17:04 · 677 阅读 · 0 评论 -
C编译预处理宏
一、编译预处理作用:对源程序编译之前做一些处理,生成扩展C源程序种类宏定义 #define #ifdef #ifndef文件包含 #include条件编译 #if--#else--#endif等其他宏定义 #line #error #pragma格式: “#”开头占单独一行句末不用加分号1-2转载 2015-09-04 13:18:46 · 472 阅读 · 0 评论 -
c编译的程序占用的存储区
c编译的程序占用的存储区分一下几类一:栈区:用于存放函数的形参与局部变量,在函数结束后就会被释放二:堆区:一般由程序员负责申请与释放,如果程序员不释放,程序结束后由操作系统回收。三:全局区(静态区)static:全局变量与静态变量存储存放在这一块,已初始化的全局变量与静态变量放在一块区域,未初始化的全局变量与静态变量放在相邻的一块区域,程序结束后由系统释放。四:文字常量区:字符常量转载 2015-09-03 12:24:20 · 351 阅读 · 0 评论 -
内存分配的三种方式
内存分配有三种方式:一:从全局存储区域分配:这时内存在程序编译阶段就已经分配好,该内存在程序运行的整个周期都有效,如:全局变量、static静态变量。二:从栈区分配:在执行函数的时候,函数中的局部变量的存储单元都可以从栈中分配,函数执行结束后这些存储单元都会被自动释放,实现从栈中分配存储单元运算操作内置于处理器的指令集中,效率很高 但是分配的内存容量有限。三:从堆中分配:也称为动态内存转载 2015-09-03 14:22:43 · 15432 阅读 · 0 评论 -
空指针、void指针与函数指针
一、空指针是一种特殊的指针 一个指针变量指向空指针,表示该指针处于空闲状态下,不指向任何地址P=NULL;表示指针变量P指向空指针;同时任何不用的指针都必须指向空指针,避免野指针的出现。二、通用指针可以指向任何数据类型,也称void指针,可以把任何类型的指针变量赋给void指针;int *PA;void *PB;PB=(void*)PA;同样,也可以把转载 2015-09-04 00:21:53 · 2269 阅读 · 0 评论 -
数组与指针
一、数组是一片连续的内存区域,在C 语言中,数组的大小在编译时必须先确定下来数组的任何操作即下标操作等同于指针的运算如 int a[5],*P=a;则 a[2]=0 *(a+2)=0 p[2]=0 *(p+2)=0 都是等价的二、不同点1、数组名是指向数组的常量指针,其值不能被被修改,而指针的值则可以被修改。如 int a[5],*P=a;转载 2015-09-03 17:39:57 · 313 阅读 · 0 评论 -
extern在C中的用法
C语言中extern的使用主要是影响函数与变量的作用域,用extern修饰的全局变量(函数)表示该全局变量(函数)可以在本文件或者其他文件用到,对于extern变量来说,仅仅是一个变量的声明,其并不是在定义分配内存空间。因此可以被extern变量声明多次通常在头文件中对提供给外部文件使用的全局变量(函数)使用extern进行声明,也就是说在C文件中定义,然后在头文件中使用extern进行声转载 2015-09-02 22:57:13 · 727 阅读 · 0 评论