展开

关键词

Cunion

union 的用法与struct 的用法非常类似。 StateMachine { char character; int number; char *str; double exp; }; 一个union 只配置一个足够大的空间以来容纳最大长度的数据成员,以上例而, 在C++里,union 的成员默认属性页为public。union 主要用来压缩空间。如果一些数据不可能在同一时间同时被用到,则可以使用union。 上述问题似乎还比较简单,那来个有技术含量的:请写一个C 函数,若处理器是Big_endian 的,则返回0;若是Little_endian 的,则返回1。 先分析一下,按照上面于大小端模式的定义,假设int 类型变量i 被初始化为1。 以大端模式存储,其内存布局如下图: ? 以小端模式存储,其内存布局如下图: ?

46130

Cconst)

const是C中最坑爹的,典型挂羊头卖狗肉,const本意是常量,但是Cconst只能用来定义只读变量。 拓展:const在C中的作用,基本都是用来修饰指针的,而且都是前置修饰:const int *p = &a; 前置修饰int *const p = &a; 后置修饰前置修饰时,我们可以通过指针p

49920
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年50元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C

    22820

    C32个

    我们在C入门基础知识2 里面于变量介绍,已经提到过C32个了,现在将它整理分类,便于记忆。----基本数据类型:char:符类型数据,占用1个节。 ----基本数据修饰: signed:修饰基本数据类型,包含正负。unsigned:修饰基本数据类型,只包含正。----复杂数据类型: struct:结构体数据类型。 ----函数内部跳转return:返回函数参数,结束函数。continue:结束循环内当前这次循环。break:结束整个循环。goto:跳转句,只能在函数内跳转。 (会使程序结构混乱,不建议使用) ----选择if:条件判断else:条件判断,于if对应switch:判断并选择分支。case:判断分支,于switch连用。 ----循环while:满足条件循环for:for循环do-while:先判断,在执行while循环 ----其它类型void:声明参数无返回数据类型typedef:类型定义,

    15210

    Cstatic

    Cstatic在有三个作用:声明静态函数,声明静态全局变量,声明静态局部变量声明静态函数 在函数的返回类型前加个static,就是静态函数了。 而不同的文件可以使用相同名的静态函数,互不影响。非静态函数可以在另一个文件中直接引用,甚至不必使用extern声明? 声明静态全局变量 全局变量定义在函数体外部,编译器会自动对其初始化。

    32120

    c的32个

    一、C共有32个,根据的作用,可分其为数据类型、控制、存储类型和其它四类。 1 数据类型(12个):(1) char :声明符型变量或函数 (2) double :声明双精度变量或函数 (3) enum :声明枚举类型 (4) float:声明浮点型变量或函数 (5) :结束当前循环,开始下一轮循环 B条件句 (1)if: 条件句 (2)else :条件句否定分支(与 if 连用) (3)goto:无条件跳转C句 (1)switch :用于开句 (2)case:开句分支 (3)default:开句中的“其他”分支 D返回句return :子程序返回句(可以带参数,也看不带参数) 3 存储类型(4个) (1)auto :声明自动变量 :声明只读变量 (2)sizeof:计算数据类型长度 (3)typedef:用以给数据类型取别名(当然还有其他作用 (4)volatile:说明变量在程序执行中可被隐含地改变 二、C中的9中控制

    2.3K30

    C笔记】volatile

    volatile的作用volatile的作用是作为指令,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。简单地说就是防止编译器对代码进行优化。 比如如下程序:XBYTE=0x55;XBYTE=0x56;XBYTE=0x57;XBYTE=0x58;对外部硬件而,上述四条句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条句进行优化 ,认为只有XBYTE=0x58(即忽略前三条句,只产生一条机器代码)。 如果入volatile,则编译器会逐一地进行编译并产生相应的机器代码(产生四条代码)。 int* &ptr)这里参数应该申明为引用,不然函数体里只会使用副本,外部没法更改{ int a,b; a = *ptr; b = *ptr; return a*b;}由于*ptr的值可能在两次取值句之间发生改变

    33360

    C笔记】extern

    extern可以用来声明变量和函数作为外部变量或者函数供其它文件使用。 extern声明函数示例程序:test.h如下:声明变量extern int a;extern int b; 函数声明extern int add(int a, int b); extern可要可不要 extern “C”extern “C”的主要作用就是为了能够正确实现C++代码调用其他C代码。加上extern “C”后,会指示编译器这部分代码按C的进行编译,而不是C++的。 因为在C++出现以前,很多代码都是C写的,而且很底层的库也是C写的,为了更好的支持原来的C代码和已经写好的C库,需要在C++中尽可能的支持C,而extern “C”就是其中的一个策略。 以上是extern的三种用法,如有错误,欢迎指出!

    47830

    C笔记】static

    utm_source=copy C代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源程序中定义一次,如果有重复定义的话编译器就会报错。 伴随着不同源文件变量和函数之间的相互引用以及相互独立的系,产生了extern和static。 下面,详细分析一下static在编写程序时有的三大类用法:static定义全局变量一个进程在内存中的布局如图1所示:? 以下是示例程序:file1.h如下:#include void printStr();我们在file1.c中定义一个静态全局变量hello, 供file1.c中的函数printStr访问。 以上就是于static的三种用法,如有错误,欢迎指出!

    33630

    C保留()详解

    保留又称。指在高级中已经定义过的,使用者不能再将这些作为变量名或过程名使用。每种程序设计都规定了自己的一套保留。 例如:BASIC规定不能使用LIST作为变量名或过程名,因为LIST是一个BASIC专用于显示内存程序的命令。C有 22+10 = 32个C++ 有22+10+11+20 = 63 个。JAVA 有22+ 9+ 17 = 48 个 ps:以上内容来自百科。 其中,C89中,(C标准)中,类型说明保留:int,long,short,float,double,char,unsigned,signed,const,void,volatile,enum,struct 如果没有写return句的话,c99(c标准)规定编译器自动在生成的目标文件中加入return 0;表示正常退出。

    62640

    C中的32个

    说明auto声明自动变量short声明短整型变量或函数int声明整型变量或函数long声明长整型变量或函数float声明浮点型变量或函数double声明双精度变量或函数char声明符型变量或函数 声明有符号类型变量或函数extern声明变量是在其他文件正声明register声明寄存器变量static声明静态变量volatile说明变量在程序执行中可被隐含地改变void声明函数无返回值或无参数,声明无类型指针if条件句 else条件句否定分支(与 if 连用)switch用于开句case开句分支for一种循环句do循环句的循环体while循环句的循环条件goto无条件跳转句continue结束当前循环 ,开始下一轮循环break跳出当前循环default开句中的“其他”分支sizeof计算数据类型长度return子程序返回句(可以带参数,也可不带参数)循环条件

    10030

    C32个(基础)

    第一类:数 据类型 A基本数据类 型(5个):void: 声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果。char: 符型类型数据,属于整型数据的一种。 C复杂类型 (5个):struct :结构体声明。 union :共用体声明。 enum :枚举声明。 typedef :声明类型别名。 sizeof :得到特定类型或特定类型变量的大小。 D存储级别 (6个):auto :指定为自动变量,由编译器自动分配及释放。通常在栈上分配。 static :指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。 第二类:流 程控制 A跳转结构(4 个):return :用在函数体中,返回特定值(或者是void值,即不返回值)。 continue: 结束当前循环,开始下一轮循环。 default: 开句中的“其他”分治,可选。C循环结构(3 个):for :for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件。

    14820

    C: const与指针

    const修饰指针的4种形式const,在C中用来修饰变量,表示这个变量是常量。const修饰指针有4种形式,区分清楚这4种即可全部理解const和指针。 ’ p4 = &a; error: assignment of read-only variable ‘p4’*p4 = 5; error: assignment of read-only loc于指针变量的理解 一个const只能修饰一个变量,所以弄清楚这4个表达式的就是搞清楚const放在某个位置是修饰谁的const修饰的变量真的不能改吗? const修饰的变量到底能不能真的被修改,取决于具体的环境,C本身并没有完全严格一致的要求。 所以在C中使用const,就好象是 一种道德约束而非法律约束所以大家使用const时更多是传递一种信息,就是告诉编译器、也告诉读程序的人,这个变量是不应该也不必被修改的。

    11010

    C中volatile的作用

    http:blog.csdn.nettigerjiboarticledetails7427366  (嵌入式牛人) 一.前 1.编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能 但有时这些优化不是程序所需要的,这时可以用volatile禁止做这些优化。 精确地说就是,遇到这个声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用valatile,则编译器将对所声明的句进行优化。 (简洁的说就是:volatile词影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有的运算,不要进行编译优化,以免出错) 2.看两个事例: 1>告诉compiler compiler就不允许做任何的优化,从而保证程序的原意:  volatile int *ip = ...;  *ip = 1;  *ip = 2;  即使你要compiler做优化,它也不会把两次付值句间化为一

    47330

    【记忆卡片】C32个

    C共有32个,可分其为数据类型、控制、存储类型以及其它数据类型(12个):(1) char :声明符型变量或函数 (2) double :声明双精度变量或函数 struct:声明结构体变量或函数 (10) union:声明共用体(联合)数据类型 (11) unsigned:声明无符号类型变量或函数 (12) void :声明函数无返回值或无参数,声明无类型指针 控制 条件句 else:条件句否定分支(与 if 连用)goto:无条件跳转C句: switch :用于开句 case:开句分支 default:开句中的“其他”分支 D返回句 :return :子程序返回句(可以带参数,也看不带参数)存储类型(4个):auto :声明自动变量 一般不使用 extern:声明变量是在其他文件正声明(也可以看做是引用变量)register :声明积存器变量 static :声明静态变量其它(4个): const :声明只读变量 sizeof:计算数据类型长度 typedef:用以给数据类型取别名(当然还有其他作用) volatile

    45770

    Godefer

    Godeferdefer用于延缓函数的执行只需要在调用普通函数或方法前加上defer,就完成了defer所需要的法。 直到包含该defer句的函数执行完毕时,defer后面的函数才会被执行,不论包含defer句的函数是通过return正常结束,还是由于panic导致的异常结束。 你可以在一个函数中执行多条defer句,它们的执行顺序与声明顺序相反。defer句经常被用于处理成对的操作,如打开、闭、连接、断开连接、加锁、释放锁。 释放资源的defer应该直接跟在请求资源的句后。 下面的代码会导致系统的文件描述符耗尽,因为所有文件都被处理之前,没有文件会被闭for _, filename := range filenames { f, err := os.Open(filename

    16610

    江哥带你玩转C | 03-C和标识符

    ,也叫作保留。 是指一些被C赋予了特殊含义的单词特征:全部都是小写在开发工具中会显示特殊颜色注意点:因为C中有特殊的含义, 所以不能用作变量名、函数名等C中一共有32个12345678charshortintlongfloatdoubleifelsereturndowhileforswitchcasebreakcontinuedefaultgotosizeofautoregisterstaticexternunsignedsignedtypedefstructenumunionvoidconstvolatile 我们用到时候会一个一个讲解这个些怎么用,现在浏览下,有个印象就OK了----分类----什么是标识符? 从面上理解,就是用来标识某些东西的符号,标识的目的就是为了将这些东西区分开来其实标识符的作用就跟人类的名差不多,为了区分每个人,就在每个人出生的时候起了个名C是由函数构成的,一个C程序中可能会有多个函数 C中的标识符严格区分大小写, test和Test是两个不同的标识符----练习下列哪些是合法的标识符fromNo22from#22my_Booleanmy-Boolean2ndObjGUIlnjMike2jack

    8000

    C中const的妙用总结

    交流、咨询,有疑问欢迎添加QQ 2125364717,一起交流、一起发现问题、一起进步啊,哈哈哈哈哈 学习了多年的C,你对const的使用全都掌握了吗? C中const是constant的缩写,通常翻译为常量、常数等,有些朋友一看到const马上就想到了常量。事实上在C中const功能很强大,它可以修饰变量、数组、指针、函数参数等。 1、 修饰变量:C中采用const修饰变量,功能是对变量声明为只读特性,并保护变量值以防被修改。 3、 修饰指针C中const修饰指针要特别注意,共有两种形式,一种是用来限定指向空间的值不能修改;另一种是限定指针不可更改。 4、 修饰函数参数const修饰函数参数,对参数起限定作用,防止其在函数内部被修改。所限定的函数参数可以是普通变量,也可以是指针变量。

    13420

    C初学者必须掌握的

    其实小伙伴在写代码的时候,还是用的比较多的,老九主要就平常中用到的常用进行总结,便于小伙伴们更全面的理解其在代码中的意图。 C总结staticCconstCregister用法autoinline内联函数static static可以用来修饰局部变量、全局变量、函数1、局部变量 裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程 const C中保留的一个,它用来限定一个变量是只读的,即不可变的。 register用法register:这个请求编译器尽可能的将变量存在CPU 内部寄存器中而不是通过内存寻址访问以提高效率。注意是尽可能,不是绝对。 注意:早期的C编译程序不会把变量保存在寄存器中,除非你命令它这样做,这时register修饰符是C的一种很有价值的补充。

    18800

    Json概述以及python对json的相操作

    JSON采用完全独立于的文本格式,但是也使用了类似于C家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换。 JSON建构于两种结构: “名称值”对的集合(A collection of namevalue pairs)。 不同的中,它被理解为对象(object),纪录(record),结构(struct),典(dictionary),哈希表(hash table),有列表(keyed list),或者联数组 ( 在大部分中,它被理解为数组(array)。  这些都是常见的数据结构。事实上大部分现代计算机都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程之间交换成为可能。 separator参数可以起到这样的作用,该参数传递是一个元组,包含分割对象的符串。

    17620

    扫码关注云+社区

    领取腾讯云代金券