c语言
c语言学习
学c的长弓狗
c语言
展开
-
C语言——程序的编译与链接
翻译环境和执行环境C语言的实现需要两种环境:把源代码转换为可执行的机器指令的翻译环境。 用于实际执行代码的执行环境。那什么是编译与链接呢?翻译环境中:一个个源文件通过编译器转化为目标文件,多个目标文件再通过链接器形成一个可执行程序。(翻译过程如图)再细分,编译过程同样分为几个阶段。1.预处理 gcc -E test.c -o test.i 2.编译gcc -S test.c 3.汇编gcc -c test.c我们先来看看执行环境做了什么,然后详细了解上...原创 2021-12-26 15:39:58 · 723 阅读 · 1 评论 -
结构体,位段,枚举,共用体(自定义类型)
结构体内存对齐是结构体的重点struct S1{char c1;//1 8 1int i;//4 8 4char c2;//1 8 1};试问上述结构体大小为多少?如何计算呢?如何计算? 首先得掌握结构体的对齐规则:1. 第一个成员在与结构体变量偏移量为0的地址处。2. 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值。VS中默认的值为83. 结构体总大小为最大对齐数(每个成员变量都有一个对齐数)原创 2021-08-25 16:43:10 · 104 阅读 · 0 评论 -
C语言常用字符串,内存库函数模拟实现
0原创 2021-08-25 14:07:40 · 131 阅读 · 0 评论 -
2021-06-20
分支与循环(1)1.顺序结构2.选择结构(分支语句)3.循环结构(循环语句)一个;就是一个语句分支语句①if(表达式)语句;②if(表达式)语句1;else语句2;③if(表达式1)语句1;else if(表达式2)语句2;else语句3;int main(){int age=10;if(age<18)printf(“未成年\n”);elseprintf("青年\n”);}&&且表示真假0是假 非0是真一对大括号就是一个代码块e原创 2021-06-20 16:24:57 · 81 阅读 · 0 评论 -
vs调试中逐过程(F10)与逐语句(F11)的区别
今天博主在调试中发生了一件困惑的事,如以下代码#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int arr[] = { 1, 2, 3, 4, 5 }; int sz = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < sz; i++) { arr[i] = 0; }原创 2021-08-13 20:58:24 · 3161 阅读 · 0 评论 -
本应是第一篇博客
对于我来说产生,将编程作为自己未来长期学习的东西是一件不曾料到的事,毕竟这是大多数科班生要做的事,而博主本身的专业是化学的化学工程与工艺。最开始接触编程是大一学习的c语言程序设计教程(主编胡慧),但当时很难将它和现实联系在一起,而心想着学习好有机化学,煤化学之类才是自己应该做的事,没想到,两年后的今天,想法确实全然反了过来。这篇博客本来应作为第一篇发布才相得益彰,但我看看自己的第一篇已经过去了一个半月,因为有些紧要的事情,所以只学习完了一遍c语言的基础知识和一部分数据结构,如我目前计划的一样,在明年原创 2021-08-06 23:33:19 · 95 阅读 · 0 评论 -
6.22分支与循环(3)
switch(浮点数不行)default默认值1.按顺序输出三个值。if(a<c){int tmp = a;a=c;c=tmp;}%是余数原创 2021-06-24 14:19:50 · 72 阅读 · 0 评论 -
21.7.30
7.28.20210和任何数异或就是任何数Int禁止左移31位有限状态机真值表空间复杂度:不怎么管空间复杂度,算变量的个数。时间是累计的,空间是不累计的可复用的栈帧,递归有空间的消耗递归的深度就是递归多少层7.30.2021其他数存在两次,只有两个数存在一次分成两组,再进行异或其他数存在三次,只有一个数存在一次统计32原创 2021-07-30 22:33:08 · 79 阅读 · 0 评论 -
知道补码求原码
今天看到一个由反码求原码的过程,一直很困惑。先了解原码,反码,补码的基本概念1.正数三者相同。2.负数如下。原码:正常二进制32位换算,比如(-1)的原码 10000000 000000000 00000000 00000001,其中负数第一位为1,整数为0,理所当然1的原码为00000000 000000000 00000000 00000001。反码:忽视第一位1/0的符号位,其他为按位取反,就是 是0换成1,是1换成0。仍以(-1)举例,为11111111 11111111 111原创 2021-08-14 22:20:08 · 1548 阅读 · 0 评论 -
7.18——7.21
面试讲解(3)7.18.2021逗号表达式,表示最后一个数字。面试讲解(4)指针练习题#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>//int main()//{// int arr[10] = { 1, 2, 3, 4, 5 };// int *p = arr;//arr是数组名,是首元素地址。// *(p + 2)==p[2]==>...原创 2021-07-21 21:48:03 · 166 阅读 · 0 评论 -
7.9——7.17
C语言操作符详解(1)7.9操作符和表达式算数操作符/除号得到的是商%模得到的是余数Double浮点数移位操作符>>右移位算术右移(计算机常用)右边丢弃,左边补原符号位逻辑右移右边丢弃,左边补零原码,反码,补码左移操作符左边丢弃,右边补零没有右移-1位位操作符& 按位与 (按二进制位)| 按位或^ 按位异或(相同为0,相异为1)不创建临时变量交换数值,加减法(超出最大值,可能会溢出)进一步,用异或赋...原创 2021-07-17 22:09:30 · 207 阅读 · 0 评论 -
数组(1)7.5
一维数组,二维数组相同类型集合。存放十个整形int arr[10] 大小用常量指明以上是数组的创建int arr[10] ={1,2,3} 不完全初始化,剩下的元素默认为0sizeof 和 strlensizeof求所占空间大小,计算变量,数组,类型的大小strlen求字符串长度,\0之前的字符长度数组用下标访问二维数组的创建Int arr[3][4] 三行四列二维数组行可以省略,列不可省略打印二维数组int main(){int arr...原创 2021-07-05 22:30:03 · 74 阅读 · 0 评论 -
——8.4
21.8.1单链表实现单链表合并数组排序数组,比较数据,大的从后往前放Number1 number2 >numbers1画图能帮助你理解旋转数组 临时数组,空间换时间链表(寻求一种更好的结构,和顺序表相辅相成)不存在扩容代价,不存在空间浪费。缺点:不支持随机访问。每个数据结构都有自己要解决的问题Struct slistnode{Int date;Struct slistnode* next;};Phead头指针...原创 2021-08-04 21:00:05 · 79 阅读 · 0 评论 -
函数与递归(2)7.3
什么是递归?程序调用自身的编程技巧(把大事化小)递归常见错误,栈溢出 stack overflowvoid print(int n){if(n>9){print(n/10)}printf("%d",n%10);}打印1234 为1 2 3 4递归找到条件,是否递归。...原创 2021-07-03 20:33:07 · 76 阅读 · 0 评论 -
详解int (*parr3[10])[5];
当你看到这个时候,相信已经学到了指针的进阶。那int (*parr3[10])[5];又是什么意思呢?arr[i][j]是二维数组,i表示行,j表示列。而int(*p)[j]是一个数组指针,用来接收数组。int (*parr3[10])[5]中(*parr3[10])可视为(*p),是一个指针数组,int (*parr3[10])[5]则是...原创 2021-08-17 17:37:34 · 943 阅读 · 1 评论 -
分支与循环(2)
if和最近的else匹配switch和case匹配defaultwhile()break和continue#include<stdio.h>int main(){ int ch = 0; while (ch = getchar() != EOF ) { putchar(ch); } return 0;}莫名其妙有问题。输入函数 scanf() getchar()输入缓冲区(输入函数读取输入缓冲...原创 2021-06-21 23:57:31 · 64 阅读 · 0 评论 -
7.6-7.8
7.6数组(2)二维数组也是连续存储的。冒泡排序:两两相邻元素比较10个元素需要9趟冒泡排序Void bubble-sort(int arr[]){Int I =0;Int sz = sizeof(arr)/sizeof(arr[0]);}数组名是首元素地址两个例外1.sizeof2.取地址数组名&实现三子棋(1)(2)7.7#include<stdio.h>Int main(){原创 2021-07-08 21:56:09 · 91 阅读 · 0 评论 -
函数(1)6.25
重要的,函数递归。完成特定任务。#includeint Add(int x,int y){int z = 0;z = x+y;return z;}int main(){int a = 10;int b = 20;int sum = Add(a,b);printf("%\n",sum);return 0;}分类1.库函数(提供公用函数,提高效率)cplusplus.com2.自定义函数1.io函数2.字符串操作函数3.原创 2021-06-25 22:26:49 · 106 阅读 · 0 评论 -
21.7.26
7.26.2021数据结构初阶徐靖杭数据结构,c++,项目C——>数据结构初阶——>c++——>Linux+数据库——>项目Vpn梯子,境外服务器,用谷歌的话数据结构和算法什么是数据结构组织数据的方式什么是算法一系列计算步骤选择题+算法题《剑指offer》时间复杂度,空间复杂度算法效率,时间效率,空间效率时间复杂度:算法基本操作的执行次数大O的渐进表示法——估算O(n2)渐进表示法,是估算两个未知数,复原创 2021-07-28 09:48:18 · 195 阅读 · 0 评论