![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C基础
cherry_hust
这个作者很懒,什么都没留下…
展开
-
C语言基础-函数调用栈
程序的执行流程,实际是连续的函数调用。函数调用通常使用堆栈实现,每个用户进程对应一个调用栈(call stack)结构。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的上下文)以备恢复以及存储本地局部变量。1 寄存器寄存器用于存放程序执行中用到的数据和指令转载 2017-03-01 23:15:32 · 679 阅读 · 0 评论 -
C语言基础-局部变量和全局变量的区别
局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量,在函数体内引用变量会用到同名的局部变量而不是全局变量。 具体来说,全局变量和局部变量的区别有:1 作用域:全局变量的作用域为整个程序,局部变量则是当前函数或循环;2 内存存储方式:全局变量存储在全局数据区,局部变量存储在栈区;3 生命期:全局变量的生命期和主程序一样,随程序的销毁而销毁;局部变量在函数内部或循环内原创 2017-02-26 12:53:23 · 767 阅读 · 0 评论 -
double计算
在《剑指offer》里看到两个double不能直接使用 == 符号判断大小,有的资料也说double不能使用++。所以接下来这道单选题改怎么办呢? 在c语言中,要求运算必须是整型的运算符是:/++!=% 不妨写个简单的程序测试一下,#include int main(){ double a,b; a =原创 2017-03-29 17:12:21 · 940 阅读 · 0 评论 -
extern 变量/函数
一 extern作用声明函数或者全局变量的作用范围,其声明的函数和变量可以在本模块和其他模块使用(注意是声明不是定义)。例如,模块B(编译单元)引用模块A定义的全局变量或函数,只要包含A模块的头文件即可,在编译阶段,模块B虽然找不到该函数值或变量,但它会在连接是从模块A生成的目标代码中找到此函数。二 例子/*main.c*/#include #include "main.h"原创 2017-05-29 17:19:17 · 358 阅读 · 0 评论 -
void*
指针有两个属性:指向变量/对象的地址和长度——指针存储地址,指针类型决定长度,编译器根据指针类型从指针指向的地址向后寻址,比如int* 从地址向后寻找4字节,double*从指针向后寻找8字节。void*是一种特别的指针,表示它没有类型/类型不能判断出指向对象的长度;任何指针都能赋值给void*,但只能获得变量/对象的地址,不知道大小;void*赋值给其他类型指针时,要指明转换类型,即说明存储原创 2017-06-01 18:57:58 · 490 阅读 · 0 评论 -
大端小端测试代码
#include #include union { int number; char s;}test;bool testBigEndin(){ test.number = 0x01000002; return (test.s == 0x01);} int main(){ if (testBigEndin()) printf("big"); else pri原创 2017-08-15 20:29:38 · 801 阅读 · 0 评论