- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 指针常量和常量指针
参考自:《C和C++程序员面试秘籍》指针常量:它本身不能被修改,指向的内容可以被修改。常量指针:它本身可以被修改,指向的内容不能被修改。const char *node1 = "abc";char *const node2 = "abc";char *node3 = "abc";node1[2] = 'k';/*error: assignment of read-only location ‘*(node1 + 2u)’*/*node1[2] = 'k';/*invalid type arg
2020-10-17 16:29:50 310
原创 复杂指针的声明和关于指针的几个小例子
参考自:《C和C++程序员面试秘籍》a: 一个有10个指针的数组,该指针是指向一个整型数的int *a[10]b:一个指向有10个整型数数组的指针int (*a)[10]c:一个指向函数的指针,该函数有一个整形参数并返回一个整型数int (*fun)(int)d:一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数int (*fun[10])(int)如何解读复杂指针?int (*func)(int *p);解析上面这行代码:首先找到未定义的标识
2020-10-17 15:50:08 201
原创 字节对齐
字节对齐的细节和编译器实现有关,一般而言,需要满足3个准则:1:结构体变量的首地址能够被其最宽基本类型成员的大小所整除2:结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍。如有需要,编译器会在成员之间加上填充字节。3:结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要,编译器会在最末一个成员之后加上填充字节。对齐是可以更改的,使用#pragma pack(x)可以改变编译器的对齐方式。C++固有类型的对齐取 编译器对齐方式(默认是8,除非#pragma pac
2020-10-15 16:27:04 150
转载 一个字由两个字节组成
字(word)、字节(byte)、位(bit)字 word : 1字=2字节(1 word = 2 byte ) 字长是指字的长度字节byte :1字节=8位(1 byte = 8 bit)位 bit一个字的字长为16一个字节的字长是8波特率bps 是 bits per second 的简称。一般数据机及网络通讯的传输速率都是以「bps」为单位。如56 Kbps、100.0Mbps 等。Bps即是Byte per second 的简称。而电脑一般都以Bps显示速度,如1Mbps 大约等同 12
2020-10-15 11:41:34 4717
转载 C语言宏参数的字符串化和宏参数的连接
在宏定义中,有时还会用到 # 和 ## 两个符号,它们能够对宏参数进行操作。的用法用来将宏参数转换为字符串,也就是在宏参数的开头和末尾添加引号。例如有如下宏定义:#define STR(s) #s那么:printf("%s", STR(c.biancheng.net));printf("%s", STR(“c.biancheng.net”));分别被展开为:printf("%s", “c.biancheng.net”);printf("%s", ““c.biancheng.net””);
2020-10-15 11:28:52 1075
原创 c++中main函数执行完后还执行其他语句吗
可以用atexit()函数来注册程序正常终止时要被调用的函数,并且在main()函数结束时,调用这些函数的顺序与注册它们的顺序相反。#include <stdio.h>#include <stdlib.h>void fn1(void);void fn2(void);int main(){atexit(fn1);atexit(fn2);printf(“main exit…\n”);return 0;}void fn1(){printf(“calling fn
2020-10-15 11:17:31 354
原创 C++与C有什么区别?
C是一个结构化语言,它的重点在于算法和数据结构。对语言本身而言,C是C++的子集。C程序的设计首先考虑的是如何通过一个过程,对输入进行运算处理,得到输出。对于C++,首先考虑的是如何构造一个对象模型,让这个模型能够配合对应的问题,这样就可以通过获取对象的状态信息得到输出或实现过程控制。因此,C与C++的最大区别在于,它们用于解决问题的思想方法不一样。C实现了C++中过程化控制及其他相关功能。而在C++中的C,相对于原来的C还有所增强,引入了重载、内联函数、异常处理等。C++更是拓展了面向对象设计
2020-10-15 11:04:53 382
原创 有符号变量和无符号变量的值的转换
当表达式中存在有符号类型和无符号类型时,所有的操作数都自动转换成无符号类型。有符号数如何转换成无符号数呢?其实并不需要转换,只不过是从内存中读取时不再认为最高位是符号位即可。举例:-7这个负数在内存中按照补码的形式存储,为11111111 11111111 11111111 11111001-7与正数做运算,根据规则是先转换为无符号数,再做运算,那就是说是;11111111 11111111 11111111 11111001
2020-10-14 22:13:20 480
原创 i++和++i 哪个效率更高
答案:如果只是内建数据类型,它们的效率差别不大(去除编译器优化的影响)。如果是自定义数据类型(主要指类),++i效率更高。此时我们不需要再做汇编代码的分析了,因为前缀式(++i)可以返回对象的引用,而后缀式只能返回对象的值,所以产生了在大对象时产生了较大的复制开销,引发效率降低。...
2020-10-14 15:10:49 269
原创 c++的::域操作符
在C++中可以通过域操作符::来直接操作全局变量:: value = 2;如果代码里同时有全局和局部的value,修改的是全局变量value,而不是局部变量value
2020-10-14 14:55:49 551
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人