C
jkdlzm
这个作者很懒,什么都没留下…
展开
-
C语言常见类型占用字节数
整数是编程中常用的一种数据,C语言通常使用int来定义整数(int 是 integer 的简写),这在《大话C语言变量和数据类型》中已经进行了详细讲解。在现代操作系统中,int 一般占用 4 个字节(Byte)的内存,共计 32 位(Bit)。如果不考虑正负数,当所有的位都为 1 时它的值最大,为 232-1 = 4,294,967,295 ≈ 43亿,这是一个很大的数,实际开发中很少用到,而诸...转载 2018-09-15 23:53:46 · 11508 阅读 · 0 评论 -
char str[] 和 char *str的区别
char* get_str(void) { char str[] = {"abcd"}; return str; } char str[] = {"abcd"};定义了一个局部字符数组,尽管是数组,但它是一个局部变量,返回它的地址肯定是一个已经释放了的空间的地址。 此函数返回的是内部一个局部字符数组str的地址,且函数调用完毕后 此...转载 2018-09-19 15:26:02 · 693 阅读 · 0 评论 -
一些常用函数的实现
1、Strcat函数原型如下:char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数{ char * address = strDest; //该语句若放在assert之后,编译出错 assert((strDest != NULL) &&...转载 2018-09-19 16:30:39 · 286 阅读 · 0 评论 -
atoi 和 itoa的实现
atoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa:1, atoi原型: int atoi(const char *nptr);函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。#include <st...转载 2018-09-19 16:33:46 · 181 阅读 · 0 评论 -
【转载】C语言中的static 详细分析
google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大。所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之。 C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源...转载 2018-09-19 16:39:23 · 188 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配...转载 2018-09-19 17:10:43 · 148 阅读 · 0 评论 -
你真的了解sizeof 么?
sizeof并不是C语言和C++语言中的一个函数,而是一个关键字,一个操作符。它的作用是返回一个对象或者类型名的长度,也就是说这个对象或者类型所占的内存字节数。它的返回值类型为size_t(usinged int),长度的单位是字节。1)对基本数据类型运用sizeof操作,得到其占用内存的字节数。如 int a; double d; printf("%d",sizeof ...转载 2018-09-19 17:12:42 · 301 阅读 · 0 评论 -
C中的volatile用法
.volatile的本质:1> 编译器的优化在本次线程内, 当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量值时,就直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以便保持一致。当变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致。当该寄存器在...转载 2018-09-25 20:14:22 · 528 阅读 · 0 评论