C\C++
白河、愁
这个作者很懒,什么都没留下…
展开
-
strlen与sizeof的区别详解
对于 strlen 和 sizeof,相信不少程序员会混淆其功能。虽然从表面上看它们都可以求字符串的长度,但二者却存在着许多不同之处及本质区别。strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)。其原型如下面的代码所示:size_t strlen(char const* str);也正因为 strlen 是一个函数,所以需要进行一次函数调用,调用示例如下面的代码所示:char sArr[] = "ILOVEC";/*用strlen()求长度*/原创 2020-09-22 19:34:02 · 3333 阅读 · 1 评论 -
free()函数详解
首先我们知道,在使用struct来定义并声明一个变量时,将会自动划分出一个连续的储存空间(虽然根据某些对齐原则会出现内存间隙,但是大体上来说还是连续的)这一块连续空间将会包括结构体中的其他变量所需要的内存。就像这样。这是一个名为X的结构体变量而free()函数的作用是对动态分配的内存进行释放,这也就意味着当使用free函数清空一个结构体时,只会清空这个大框里的内存,而不会对a,b,c,d指向的内存进行清理。当然,一般来说直接定义变量于结构体内会更加方便。但是考虑一下两种声明struct stu原创 2020-09-17 10:09:38 · 48557 阅读 · 12 评论 -
#define用法详解
1.#define 的作用在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。在C或C++语言中,“宏”分为有参数和无参数两种。2. 无参宏定义无参宏的宏名后不带参数。其定义的一般形式为:#define 标识符 字符串其中的“#”表示这是一条预处理命令。凡是以“#”开头的转载 2020-09-17 09:15:41 · 34797 阅读 · 7 评论 -
malloc函数使用总结
待补充原创 2020-07-03 10:17:01 · 130 阅读 · 0 评论 -
c语言结构体赋值问题
一般来说,C语言中的结构体变量可以用另一个变量对其进行赋值或初始化。简单结构体(不包含指针成员)直接赋值没有问题。但是稍微复杂一点的结构体里面会 有指针成员,那么以上的浅拷贝则会有问题。1)赋值会直接将结构体的指针变量被赋值,赋值之前其所指向的内存单元丢失;2)赋值之后若该指针指向的内存单元被其它指针释放掉,那么继续使用该成员指针的话则又可能导致内存泄漏。...原创 2020-07-03 10:15:18 · 1128 阅读 · 0 评论