C语言进阶
文章平均质量分 87
C语言进阶
无名小飛猿
这个作者很懒,什么都没留下…
展开
-
柔性数组
柔性数组特点结构体中的柔性数组成员前面必须至少一个其他成员typedef struct st{ int i; int a[0];//或者int a[] 这就是柔性数组成员}type_a;sizeof返回的这种结构大小不包括柔性数组的内存柔性数组不包含结构体空间,只包含数组大小typedef struct st{ int i; int a[0];//或者int a[] 这就是柔性数组成员}type_a;printf("%d\n",sizeof(type_a));//输出4原创 2020-12-01 23:07:02 · 227 阅读 · 0 评论 -
C语言内存开辟
C程序内存分配的几个区域:栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配内存的容量有限。栈区主要运行存放运行函数而分配的局部变量,函数参数,返回数据,返回地址等。堆区:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS(操作系统)回收。分配方式类似于链表。数据段(静态区):存放全局变量,静态数据,程序结束后由系统释放。代码段:存放函数体(类成员函数和全局函数)的二进制代码。.原创 2020-12-01 21:54:49 · 691 阅读 · 0 评论 -
动态内存错误
对NULL指针解引错误void test(){ int *p=(int *)malloc(INT_MAX/4);}原创 2020-12-01 07:47:12 · 215 阅读 · 0 评论 -
动态内存管理
动态内存函数介绍malloc和free函数原创 2020-11-28 00:00:07 · 222 阅读 · 0 评论 -
指针数组常见面试题
sizeof(数组名):这里的数组名表示的是整个数组,计算的是整个数组的大小。&数组名:这里的数组名表示整个数组,取出的是整个数组的地址。除此之外所有的数组名都表示首元素的地址。指针就是地址,内存中分配的大小就是四字节strlen求数组元素个数或字符串长度不包含’\0’头文件:#include <string.h>strlen()函数用来计算字符串的长度,其原型为:unsigned int strlen (char *s); s为指定的字符串,遇见’\0’结束一维数组.原创 2020-11-27 21:45:49 · 267 阅读 · 0 评论 -
自定义类型
结构体结构体声明struct Stu{ char name[20]; int age; char sex[5]; char id[20];}; //分号不能丢在声明结构体时候可以不完全的声明不能直接引用自身必须通过指针引用//匿名结构体struct{ int a; int b; int c;}x,a[20],p;结构体的自引用//错误引用struct Node{ int data; struct Node next;//直接引用自原创 2020-11-24 07:15:54 · 252 阅读 · 1 评论 -
指针的进阶
前篇引要指针就是个变量,用来存放地址,地址唯一标识一块内存空间指针的大小就是固定的4/8个字节(32位平台/64位平台)指针是有类型,指针的类型决定了指针加减整数的步长。字符指针char *int main(){ char ch='w'; char *pc=&ch; char *pstr="hello bit";//字符串hello bit的首地址放到pstr中 return 0;}面试题int main(){ char str1[]="hello bit";原创 2020-11-20 23:57:29 · 281 阅读 · 0 评论 -
C语言解读qsort函数
C语言中有一个快速排序的标准库函数 qsort ,在stdlib.h 中声明。定义如下:void qsort(void *base, int nelem, unsigned int width, int ( * pfCompare)( const void *, const void *));参数解读:base是待排序数组的起始地址nelem是待排序数组的元素个数width是待排序数组的每个元素的大小单位是字节pfCompare是一个函数指针,指向一个比较函数比较函数“比较函数”原创 2020-11-20 23:54:20 · 433 阅读 · 0 评论 -
C语言解读assert函数
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。已放弃使用assert()的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。在调试结束后,可以.原创 2020-11-20 23:41:34 · 9585 阅读 · 0 评论