C
丨Q ,Q丨
这个作者很懒,什么都没留下…
展开
-
C/C++函数原型
C/C++函数原型与函数定义1.返回值函数定义的返回值:被调函数在返回一个数据的时候,会将返回值放在一块空间(内存或者寄存器),所以,函数定义的返回值决定被调函数返回什么值,也就是说,被调函数要把这个返回值放到多大的内存中(不同类型占用空间大小不同不同)函数原型的返回值:被调函数返回一个值(将返回值放在某一空间)后,主调函数会得到这个返回值的地址,除了知道地址,还要知道空间大小...原创 2019-03-25 22:57:26 · 868 阅读 · 0 评论 -
C语言——可变参数列表
C语言中的可变参数列表可变参数列表在函数形参的类型及数目不确定的时候,可以使用可变参数列表通过一个例子,我们来引入可变参数列表编写一个函数,来计算一组数据的平均分解决这个问题我们首先解决的难题就是数据的个数不确定,我们可以使用数组来轻而易举的解决这个问题当然,接下来要说到的可变参数列表是另一种解决方法先来了解一个头文件 stdarg.h可变参数列表是通过宏来实现...原创 2019-02-24 15:16:44 · 310 阅读 · 0 评论 -
C语言指针和数组的不同
C语言的指针和数组不是一个东西(⊙o⊙)这篇文章只要是想说一下在进行下标运算(地址偏移)的时候,误将指针和数组看作一个东西,发生一些微妙的错误一.通过一个例子来引入话题源文件1内容:int a[5] = {1, 2, 3, 4, 5};int *b = a;源文件2内容:#include <stdio.h>extern int *a;extern ...原创 2019-02-26 00:59:03 · 194 阅读 · 0 评论 -
C语言字符串常量
C语言字符串常量一.字符串常量的声明char *p = "hello";//指针直接往上戳一个字符串常量为什么会给一个指针赋值?字符串常量的值是该字符串第一个字母的首地址敲一段代码验证一下结论:字符串本身是有值的,就是第一个字符的地址。因为它的值是地址,所以可以这样用还有一条:同一个字符串常量,它们的值(地址)相同二.注意事项1.字符串常量和字符数组不同...原创 2019-02-27 20:22:57 · 10270 阅读 · 3 评论 -
C语言函数指针
C语言函数指针一.先聊聊函数名函数名是一个函数的入口地址(一个常量),函数本质上就是一段代码,被放在内存中的“代码段”,函数名就是函数在代码段中的入口地址。调用函数的时候,通过跳转到该地址,调用函数二.既然是一个地址,就可以使用指针变量存储函数指针的声明:返回值类型 (变量名 *)(形参列表)例:int (*pf)(int x, int y); 给函数指针赋值:...原创 2019-02-28 20:14:55 · 694 阅读 · 0 评论 -
C语言描述变量类型
C语言描述变量类型方法:先来看一个变量的声明:int (*(*a)())[6];大家会不会觉得这个有问题呢?可以通过编译哦。好了,现在开始上干货一个声明可以这样表示:类型 表达式;方法:通过计算表达式来确定类型。变量经过表达式的运算,得到了声明前面的类型,以此,来推断变量类型。是不是还是一脸懵,从简单的开始int a;//这个声明没啥好说的int *a...原创 2019-02-28 20:41:00 · 494 阅读 · 0 评论 -
C语言预编译处理
C语言编译预处理一.预定义符号二.#define1.简单的替换 例:#define N 25 编译过程中,会将所有的N换成252.宏(1)#define 宏名(参数列表) 内容例:#define MAX(a, b) ((a) > (b) ? (a) : (b))#define MALLOC(size, type) \ //如果不止1行,可以用 \ 连接...原创 2019-03-03 01:00:01 · 921 阅读 · 0 评论 -
C语言动态申请
C语言申请动态内存——malloc, calloc & realloc ->free1.为什么要动态申请由于数组在声明的时候总要显式的指定一个长度,容易造成空间浪费或者空间不够用,使用不够灵活,所以使用了动态的申请2.使用过后记得free动态空间与直接声明的变量不同,直接声明的变量在栈内存中,当代码块执行完毕,栈内存的变量会自动释放;但是动态申请的变量在堆内存中,...原创 2019-03-18 12:11:34 · 2255 阅读 · 0 评论 -
C语言作用域,链接属性,存储类型
容易搞混的三个概念——————作用域,链接属性和存储类型1.作用域(描述可见性)作用域分为四种:代码块作用域(代码块内可见) 文件作用域(文件内可见,因为有include,所以不一定是某一个源文件) 原型作用域(只在原型内可见) 函数作用域a.代码块作用域代码块作用域,声明在代码块中(花括号内)的变量,具有代码块作用域。具有代码块作用域的变量的作用范围:从声明的地方开...原创 2019-03-19 08:26:08 · 791 阅读 · 0 评论 -
C语言断言
C语言——断言,调试技巧1.断言assert(_Expression)是一个宏,在<assert.h>中定义2.用法断言可以方便调试#include <assert.h>int main(void){ int a = 1; assert(a == 0); return 0;}可以看到,当表达式为假(或者值为0)...原创 2019-03-22 18:16:59 · 621 阅读 · 0 评论 -
链接属性再总结
链接属性再总结1.extern int a = 1;和extern int a;的区别代码块之外extern int a = 1;int a = 1;上述代码没有任何区别,代码快之外,在缺省关键字extern情况下,变量a的默认链接属性就是external,extern int a = 3;表示在显式地声明这个变量的链接属性时external上面的代码会在静态内存中分配空...原创 2019-04-11 10:34:07 · 256 阅读 · 0 评论