c语言
♚陌上花开
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
僵死进程,孤儿进程
一、僵死进程 1 #include<stdlib.h> 2 #include<unistd.h> 3 #include<stdio.h> 4 int main() 5 { 6 int n=0; 7 char *s = NULL; 8 9 pid_t id = fork(); 10 if(id == -1) 11 { 12 exit(1); 13 }原创 2022-05-11 14:20:41 · 289 阅读 · 0 评论 -
如何判断是以c++方式编译还是c方式编译
如何判断是以c++方式编译还是c方式编译原创 2022-04-21 17:27:19 · 1110 阅读 · 0 评论 -
for()循环参数调用顺序
for(表达式1;表达式2;表达式3){ 循环体语句;}表达式1:初始化语句表达式2:判断条件语句表达式3:控制条件语句A.先调用表达式1,初始化变量;B.再调用表达式2,判断变量是否满足条件,True则继续执行,flase则结束循环;C.执行循环语句;D.调用表达式3,B,C,D,B··········(循环)打印邮费价格表,输出20kg以内物品的邮费价格表,邮费计算规则如下所示:1kg以内6元。超过1kg,每增加1kg加收2元。...原创 2022-03-23 12:54:10 · 293 阅读 · 0 评论 -
产生随机数
产生随机数需要用到rand()函数,此函数需要头文件stdlib.h若只使用rand()函数,产生的随机数为伪随机数,因为rand()函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。若想每次产生的随机数都不同,需要改变随机种子,可以使用时间来改变系统随机种子。int rand_()//产生随机数{ time_t ts; unsigned int n = time(原创 2022-01-04 00:11:19 · 241 阅读 · 1 评论 -
猜数字游戏
#include<stdio.h>#include<stdlib.h>#include<time.h>int rander()//产生随机数{ time_t ts; unsigned int n = time(&ts);//获取时间 srand(n);//初始化随机种子 int num = rand() % 100 + 1;//随机数范围1—100 return num;} int main(){ int a = -1; char o.原创 2022-01-04 00:00:37 · 2345 阅读 · 1 评论 -
c与c++的区别
一、函数的区别函数默认值参数在函数声明或者定义的时候,给定参数默认值,如果实参传递时候,不给该形参传值,则会按照默认值传参函数参数的默认值是在编译期生成指令的时候,直接生成入参指令。函数的默认值参数需要从右往左依次赋值,不能跳过。函数的值参数在同一作用域只能赋值一次,不能重复赋值。因为函数参数的默认值是在编译期带入的,所以函数的参数的默认值只在本文件生效。内联函数在调用内联函数时,该函数会直接在调用点展开(在编译期展开指令)。正常函数调用:1.传参 2. call f原创 2021-12-06 18:56:28 · 1083 阅读 · 1 评论 -
函数的调用过程
一、概念寄存器:CPU中的变量cpu 中有很多寄存器,寄存器进行存取函数调用的过程会生成一个栈,esp:栈顶寄存器ebp:栈底寄存器二、函数调用过程1.参数入栈参数入栈:(c语言)四字节入栈:#include<stdio.h>int fun(int a, int b){ int c = 0; return c = a + b;}int main(){ int a = 10; int b = 5; int c = fun(a...原创 2021-11-26 17:46:59 · 990 阅读 · 1 评论 -
交换两个数
一、借助第三方变量使用指针void Swap(int *a,int *b){ int tmp = *a; *a = *b; *b = tmp;}使用引用void Swap(int &a,int &b){ int tmp = a; a = b; b = tmp;}二、相加相减void Swap(int *a,int *b){ *a = *a + *b; *b = *a - *b; *原创 2021-11-07 20:25:19 · 160 阅读 · 0 评论 -
上机课 1
1.由于浮点数的表示是不精确的,所以不能直接比较两个数是否完全相等。一般都是在允许的某个范围内认为某个个浮点数相等,如有两个浮点数a、b,允许的误差范围为 1e-6,则 abs(a-b) <= 1e-6,即可认为 a 和 b 相等。2.B3.A4.(123.5)10 = (0111 1011.1)2 (200)10 = (1100 1000)2 (30)10 = (0001 1110)25.(0101 1010 1101 1111 0011 1101 1111 010...原创 2021-10-14 21:35:25 · 143 阅读 · 0 评论 -
无类型指针void*
void一般我们常见的就是这两种情况:1) 当函数不需要返回值时,必须使用void限定,例如: void fun(int a)。2) 当函数不允许接受参数时,必须使用void限定。例如: int fun(void)。void 不能定义变量,但可以定义指针变量。特别之处在于void 指针可以指向任意类型变量的地址。char ch = 'a';int x = 10;double d = 12.23;void* vp = &ch;void* vp = &x;void* vp原创 2021-09-27 23:40:12 · 204 阅读 · 0 评论 -
My_strcpy函数
版本一void My_strcpy(char* dest, const char* scr)//拷贝复制{ assert(scr != nullptr&&dest !=nullptr); int i = 0; while (scr[i] != '\0') { dest[i] = scr[i]; ++i; } dest[i] = '\0';//字符串最后都是'\0' }int main(){ char stra[20] = { "zytzyt" };原创 2021-09-07 22:18:53 · 372 阅读 · 0 评论 -
My_strlen()函数
利用一个变量计数#include<stdio.h>#include<assert.h>/*计算字符串的长度*/int My_strlen(const char* stra)//为安全起见,const 修饰指针,防止被改变 { assert(stra != nullptr); int i = 0; while (stra[i] != '\0') { ++i; } return i;}int main(){ char stra[10] = { "z原创 2021-09-06 23:10:33 · 304 阅读 · 0 评论 -
数组 简述
一、一维数组数组是包含给定类型的一组数据,并将这些数据依次存储在连续的内存空间中。每个独立的数据被称为数组的元素(element)。元素的类型可以是任意类型。数组本身也是一个结构,其类型由它的元素类型延伸而来。更具体地说,数组的类型由元素的类型和数量所决定。如果一个数组的元素是E类型,那么该数组就称为“E数组”。例如如果元素类型为int,那么该数组的类型就是“int 数组"。然而,int 数组类型是不完整的类型,除非指定了数组元素的数量。如果一个int 数组有16个元素,那么它就是一个完整的对象类型.原创 2021-09-03 18:24:19 · 549 阅读 · 0 评论 -
break,continue,goto,return
一、breakbreak语句只能用在switch语句和循环语句,用来跳出switch语句或提前终止循环,转去执行switch语句或循环之后的语句。二、continuecontinue语句只能用在循环语句中,用来终止本次循环。当程序执行到continue语句时,将跳过其后尚未执行的循环体语句,开始下一次循环。下一次循环是否执行仍然取决于循环条件的判断。continue语句与break语句的区别在于,continue语句结束的只是本次循环,而break结束的是整个循环。三、gotog.原创 2021-08-07 01:57:31 · 994 阅读 · 0 评论 -
bool 类型
bool只有true 和false; 0是flase,其他情况(非0)都是true.vs.2012不完全支持c99,不能引入头文件stdbool.但文件后缀为.cpp可以直接使用bool类型。原创 2021-08-05 17:48:02 · 4612 阅读 · 0 评论 -
static静态关键字,extem外部关键字
static静态关键字修饰的局部变量第一次调用的时候初始化,以后调用的时候不用初始化。#include<stdio.h>void fun(int x){ int a = x; int b = 0; ++a; ++b; printf("a:%d b = %d\n", a,b); return;}int main(){ for (int i = 10; i > 0; --i) { fun(i); } return 0;}static 修饰int原创 2021-08-05 15:47:52 · 536 阅读 · 0 评论 -
typedef
typedef是在计算机编程语言中用来为复杂的声明定义简单的别名。它本身是一种存储类的关键字,与.auto、extern. mutable、 static、 register (寄存器关键字)等关键字不能出现在同一个表达式中。typedef unsigned char u_int8;typedef unsigned short u_int16;typedef unsigned int u_int32;typedef unsigned long long u_int64;int main(){原创 2021-08-04 19:29:00 · 162 阅读 · 0 评论 -
sizeof() 和 strlen
sizeof 在编译的时候计算,只关心计算的类型int main(){ int a = 10; int size = sizeof(++a);//4 //sizeof 实在编译过程执行,只关心计算的类型 int size_ = sizeof(a + 0.9);//8 //a+0.9类型变为double ,8个字节}int main(){ const char* s = "zytzyt"; int size = sizeof(s);//s是指针类型,4 字节 size =原创 2021-08-04 18:21:16 · 95 阅读 · 0 评论 -
输入字符串判断有多少个字母,数字和其他
#include<stdio.h>#include<ctype.h>int main(){ printf("请输入字符串:"); char cha; //字符串 int number = 0;//数字个数初始值 int ch = 0;//字母个数初始值 int other = 0;//其他符号个数初始值 while ((cha = getchar())!= '\n') { //判断是否为数字 if (isdigit(cha)!=0) { n.原创 2021-06-28 21:50:04 · 3330 阅读 · 0 评论 -
C语言概述
一、c语言的编译链接过程:二、C源程序的结构特点1.一个C语言源程序可以由一个或多个源文件组成。⒉.每个源文件可由一个或多个函数组成。3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面.5.每一个说明,每一个语句都必须以分号结尾。6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。三、数据类型的大小(有原创 2021-06-27 17:21:30 · 1746 阅读 · 0 评论 -
二,八,十,十六进制间的转化
一、2,8,16进制转10进制,权值相加二进制数、八进制数、十六进制数转换为十进制数的规律是相同的。把二进制数(八进制或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”。如:(10100)2 →(1*2^4+0*2^3+ 1*2^2+0*2^1 + 0*2^0)10→(20)10(245)8 →(2*8^2+4*8^1+5*8^0)10→(165)10(1F2)16 →(1*16^2+15*16^1 +2*16^0)10→(498)10二、10,原创 2021-06-27 14:38:46 · 1999 阅读 · 0 评论
分享