C语言基础
kkkddde
祝你快乐
展开
-
动态内存管理
1.为什么存在动态内存开辟普通的开辟方式:int a=0;int arr[5]={0};上述内存开辟方式是在栈上开辟的,大小固定,声明数组时且必须给定数组长度,它所需要的内存在编译时分配,但很多时候我们所需要的空间大小在程序运行时才能知道,这时上述的开辟方式就不行了,所以需要通过动态内存开辟的方法。2.动态内存函数malloc void* malloc(size_t size);作用申请一块连续的空间并返回指向这段空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失原创 2020-11-10 12:44:41 · 161 阅读 · 0 评论 -
C 语言基础位段 枚举 联合体
一.结构体实现位段概念:位段和结构体的声明,不过位段的成员和结构体有两处不同1.位段的成员必须是int ,unsigned int ,signed int或者char2.位段后面需要加上冒号和数字例如:struct A { int _a:2; int _b:5; int _c:10; int _d:30; }位段的内存大小计算:先开辟第一个成员所占至少需要的字节,第二个成员所占比特位如果能放进去剩下的比特位中,则不开辟,如果放不进去,则再开辟第二个成员所需要的字节,以此类推。原创 2020-11-05 11:39:21 · 240 阅读 · 0 评论 -
C语言 什么是结构体内存对齐
结构体结构体是一些值的集合,这些值被称为成员变量,每个成员类型也可以不同。1.结构体的声明例如创一个学生的结构体struct student{char name[20];int age;char sex[5];};//分号不能忘记特殊声明:匿名结构体类型:不完全声明struct{ char name[20]; int age;}stu;结构体的自引用struct Node{ int data; struct Node* next;}typedef作用:将结原创 2020-11-03 19:08:25 · 205 阅读 · 0 评论 -
字符串函数和字符函数 c语言
字符函数和字符串函数函数介绍1. 求字符串长度strlensize_t(const char * str)字符串以’\0’为结束的标志 strlen返回的是遇到’\0’前字符的个数函数的返回值是size_t(无符号)模拟实现1.递归 不创建临时变量#include<stdio.h>#include<assert.h>size_t my_strlen(char * str){ if (*str == '\0') { return 0; } ret原创 2020-10-29 21:59:59 · 353 阅读 · 0 评论 -
C语言 --strlen库函数的三种实现方式
1.递归 不创建临时变量#include<stdio.h>#include<assert.h>size_t my_strlen(char * str){ if (*str == '\0') { return 0; } return 1 + my_strlen(str + 1);2.指针相减size_t my_strlen(const char *str){ assert(str != NULL); const char *start = str; w原创 2020-10-20 10:50:21 · 321 阅读 · 0 评论 -
c语言-指针基本知识
指针是一个存放地址的变量,存放的地址指向了另一个变量。int main(){ int a = 4; int * p = &a; printf("%d\n",* p);//打印p指向的(整形变量a的内容) printf("%p\n", p);//打印p所存储的(a的地址) printf("%p\n", &a);// 打印p所存储的(a的地址) return 0;}*说明p是一个指针 .int 说明p指向了一个整型变量a.&a即是取a的地址.通过指针改变变量原创 2020-08-13 21:46:18 · 194 阅读 · 0 评论 -
c语言 static
#include<stdio.h>void test(){ int a = 1; a++; printf("%d\n", a);}int main(){ int i = 0; while (i < 10) { test(); i++; } return 0;}如上代码,程序运行结果为10个2,但当给test里的int a 加上 static修饰时,程序的巡行结果会发生变化,变为2,3,4,5,6,7,8,9,10,11原因:static 可以修饰原创 2020-08-13 15:47:12 · 144 阅读 · 0 评论 -
c语言 字符串 转义字符
关于字符串,例如用char创建一个字符串数组int main(){ char arr1[] = { "abcde" }; char arr2[] = { 'a', 'b', 'c', 'd', 'e' }; printf("%s\n", arr1);//%s打印字符串 printf("%s\n", arr2); return 0;}对于arr1,打印结果是abcde对于arr2,打印结果是abcde加乱码。这种由双引号引起来的一串字符称为字符串字面值,或者简称字 符串。注:字符串的原创 2020-08-10 13:07:35 · 1044 阅读 · 0 评论