C语言
蜗牛_Wolf
有道无术,术可求;无道有术,止于术。
展开
-
内存对齐
1. 内存对齐(Data Structure Alignment)是什么内存对齐,或者说字节对齐,是一个数据类型所能存放的内存地址的属性(Alignment is a property of a memory address)。这个属性是一个无符号整数,并且这个整数必须是2的N次方(1、2、4、8、……、1024、……)。当我们说,一个数据类型的内存对齐为8时,意思就是指这个数据类型所定义...转载 2018-12-27 17:16:36 · 213 阅读 · 0 评论 -
C语言面试题大汇总之华为面试题
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同 名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? ...转载 2019-04-22 07:11:52 · 1005 阅读 · 0 评论 -
位运算
转载 2019-03-27 07:05:12 · 89 阅读 · 0 评论 -
c专家编程
1、几个问题:这五个问题,我只明白三个,有一个是模糊,一个是不懂,希望看完本书我能都明白;2、为了避免在需要进行比较时误用赋值符号,最好在比较式中先写常数,如:if(3 == i)这样,如果不小心误用了赋值符号,编译器就会发出“attempted assighnment to literal”的错误信息;3、time_t是long型的typedef形式;ctime()函数把参数...转载 2019-01-22 17:04:06 · 287 阅读 · 0 评论 -
C++ template
C++ template函数模板:1,模板函数为不同的模板实参定义了一个函数家族2,当传递模板实参的时候,可以根据实参的类型对函数模板实例化3,可以显示指定模板参数。4,可以重载函数模板5,当重载函数模板时,可以显示的指定模板参数6,函数模板的所有重载版本的声明一定位于调用之前类模板:1,类模板成员函数只有在使用的时候才会被实例化。为了使用类模板对象,必须显示的指定模板实参。 ...原创 2019-01-25 08:38:35 · 967 阅读 · 0 评论 -
C专家编程
C专家编程第一章 1,在函数定义中形参的数量最大是31个,函数调用时实参的数量最大也是31个,一条源代码行里至少可以有509个字符,在表达式中可支持32层嵌套的括号。 2,const float * 类型是指向一个具有const限定符的float类型的指针。 3,const int *limitp=&limitp;limitp是一个指向常量整型的指针,这个指针不能...原创 2019-01-03 14:08:18 · 1674 阅读 · 0 评论 -
More Effective C++
More Effective C++1,在任何情况下都不能使用指向空值的引用,一个引用必须总是指向某些对象。而指针可以指向空值,而引用不能。因为不存在指向空值的引用,因此引用前不需要检查合法性,所以引用效率高。2,指针可以被重新赋值以指向另一个不同的对象,但引用总是指向在初始化时被指定的对象,以后不能改变。3,重载某个操作时应该使用引用。4,当知道指向一个对象并且不想改变其指向时,或者在重...原创 2019-01-07 16:03:46 · 164 阅读 · 0 评论 -
c和指针
C和指针第一章: 1,在逻辑上删除代码而不是注释掉用: #if 0 statements #endif 2,#include和#define称为预处理指令,由预处理器解释,预处理器读入源码,根据预处理指令对其修改,然后将修改过的源代码交给编译器。 列如:#include<stdio.h> ;预处理...原创 2019-01-02 18:50:47 · 4746 阅读 · 0 评论 -
EffectiveC++
EffectiveC++ 1,C++是由C,Object-Oriented C++(构造函数,析构函数,封装,继承,多态,虚函数),Template C++,STL四个次语言组成的联合。C++高效编程守则取决于使用C++哪一部分。2,尽量用const enum inline替换#define即宁可以编译器替换预处理器 以常量替换#define的特殊情况:定义常量指针,通常放在头文件中因...原创 2019-01-05 17:02:59 · 638 阅读 · 0 评论 -
C语言深度剖析
C语言深度剖析1,编译器通常不为普通const只读变量分配存储空间,而是将他们保存在符号表中,使得它成为一个编译期间的值,没有了存储与读内存的操作,使得它的效率更高。2,const int *p;//p可变,p指向的对象不变。 int const *p;//p可变,p指向的对象不可变; int * const p;//p不可变,p指向的对象可变; const int ...原创 2019-01-04 11:03:55 · 1120 阅读 · 0 评论 -
C陷阱和缺陷,必须知道的495个C语言问题
C陷阱和缺陷1,将常数0转型为“指向返回值为void的函数的指针”类型:(void (*)())02,宏定义不要忽视空格必须知道的495个C语言问题 1,typedef int (*funcptr)();意思是定义了一个类型funcptr,表示指向返回值为int型(参数未指明)的函数的指针。它可以用来声明一个或多个函数指针。 2,如何声明返回指向同类型函数的指针的函数?即函数指针返回一个...原创 2019-01-03 19:21:20 · 614 阅读 · 0 评论 -
C语言字节对齐、结构体对齐
一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果取它的值的话...转载 2018-12-27 17:04:38 · 229 阅读 · 0 评论 -
栈区和堆区内存分配区别
从上图可知,程序占用的内存被分了以下几部分.1、栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,内存的分配是连续的,类似于平时我们所说的栈,如果还不清楚,那么就把它想成数组,它的内存分配是连续分配的,即,所分配的内存是在一块连续的内存区域内.当我们声明变量时,那么编译器会自动接着当前栈区的结尾来分配内存.2、堆区(heap)一般由程序员分...转载 2018-12-27 17:14:07 · 934 阅读 · 0 评论 -
C库函数
16. memcpy函数的实现void*memcpy(void*dest,const void*src,size_t count) {char*tmp=dest;const char*s=src;while(count--)*tmp++=*s++; return dest;}17. Strcpy函数实现char*s...转载 2019-04-15 06:44:15 · 150 阅读 · 0 评论