C语言
醉了我
这个作者很懒,什么都没留下…
展开
-
经典查询判断杀人案
在广州某个夜晚,发生一起谋杀案,警察通过排查确定杀人凶手是4个嫌疑中的一个,以下是四个人的说词A说:不是我 ‘A’ B说:是C ‘B’C说:是D D说:C在胡说 其中只有3个人说了真话,1个人说了假话,现在根据这些信息,写一个程序来确定哪个是凶手? char killer; for(killer ='A'; killer < 'E'; killer++) { if...原创 2019-06-08 18:24:35 · 681 阅读 · 0 评论 -
删除重复的字符
int i, j, k;char ch[20];bzero(ch, 20);printf("请输入一个字符串少于20个字节:");//scanf是不支持输入空格 -->fgetsscanf("%s", ch);printf("你输入的字符串是:%s\n", ch);//计算字符串的有效字节数,不包括'\0'int len = strlen(ch);//第几个数进行比对fo...原创 2019-06-08 19:10:55 · 240 阅读 · 0 评论 -
数组元素倒序
int a[10]; int *p=a, i, j, k, flag;//一共比对9次for(j=0; j<9; j++){ // 比对9-j次 for(i=0; i<9-j; i++) { //如果前面的数比后面的大则交换 if(a[i] > a[i+1]) { flag = a[i]; a[i] = a[i+1]; a[i+1] ...原创 2019-06-08 19:21:47 · 859 阅读 · 0 评论 -
编译四步走
编译的4步骤:gcc test.c -o test1、预处理:(1)把宏定义替换入代码(2)解析头文件(3)条件编译:#if 1 #else #endif#ifdef HELLO #else #endif(4)去掉注释代码gcc -E test.c -o test.i 2、编译:检查语法错误,把.c文件翻译成汇编语言gcc -S test.i -o test.s3、汇编:...原创 2019-06-09 12:06:36 · 738 阅读 · 0 评论 -
软链接与硬链接
创建文件软链接ln -s scanf.c 1软链接:是一种特殊的文件,有独有的文件名和索引号(inode),可以根据它找到对应的文件,软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。软链接不共享 inode,也可以说是个特殊的 inode,所以和原来的 inode 不一样。创建硬链接ln scanf.c 2硬链接:有自己的文件名,但是索引号(in...原创 2019-06-09 15:51:11 · 249 阅读 · 0 评论 -
内核链表小结构体地址获取大结构体地址
原创 2019-06-09 17:49:22 · 608 阅读 · 0 评论 -
结构体内存存放规则
一般变量都是从高到低分配内存地址,但对于结构体来说,结构体的成员在内存中顺序存放,所占内存地址依次增高,第一个成员处于低地址处,最后一个成员处于最高地址处,但结构体成员的内存分配不一定是连续的,编译器会对其成员变量依据前面介绍的 “对齐”原则进行处理。#include <stdio.h>struct data{ int a; unsigned short b;};int...原创 2019-06-09 21:05:56 · 1477 阅读 · 0 评论 -
二维数组类型甄别
共分为三个层级,可以联想大厦的架构int a[3][4]={{1, 2, 3, 4},{ 5, 6, 7, 8}, {9, 10, 11, 12}};假设:a==0x4000 整层: &a ==0x4000 --》整个二位数组的地址 前三层: a ==0x4000 --》大数组首元素地址,小数组地址 &a[0...原创 2019-06-08 18:15:35 · 135 阅读 · 0 评论 -
输出金字塔
int num;char eng;int sum;int i,j,k,h;printf("请选择:\n1、打印星星\n2、打印字母\n");scanf("%d",&sum);switch(sum){ case 1: printf("请输入一个整数:\n"); scanf("%d",&num); for(i=1;i<=num;i++) ...原创 2019-06-08 16:52:23 · 761 阅读 · 0 评论 -
字符串操作
1.strncasecmp(字符串比较,忽视大小写) strcat(追加字符串)。2.strcpy是字符串复制,strcpy(pp,"*** ");把"*** "复制到pp中。strstr(buf,"原创 2019-06-09 11:02:33 · 79 阅读 · 0 评论 -
关键字
4.所有的变量默认为auto(自动,全局),将不再类,结构体,枚举,联合体,函数中定义的变量视为全局。register–>建议编译器将变量存储在寄存器中以提高效率,针对使用频繁的变量。static–>静态变量,限制作用域,存储在常量区。作用:(1).统计函数被调用的次数,(2)将局部变为全局(等同),(3).修饰全局不能被别的程序extern,限制当前文件。volatile–&g...原创 2019-06-09 11:13:13 · 98 阅读 · 0 评论 -
对函数指针类型取别名并调用
对下面的程序段进行解释:1.typedef void (IpFunction)(void); -->void ()(void);指向void返回值,void参数这种函数的指针类型2.IpFunction IpReset = (IpFunction)0xF000FFF0;3.IpReset();1.为指向void类型返回值,只有一个void类型参数的的函数的指针取一个新的别名IpFun...原创 2019-06-07 11:59:47 · 1133 阅读 · 0 评论 -
上一张/下一张
最简式:#define BMPNUM 3if(num<BMPNUM) //下一张num++;elsenum=1;if(num>1) //上一张num–;elsenum=BMPNUM;原创 2019-06-08 10:28:30 · 1745 阅读 · 0 评论 -
设置线程属性
设置线程属性为可分离 第一:定义属性变量并初始化 pthread_attr_t pthread_attr_init() 第二:调用你想设置的属性的接口函数 pthread_attr_setxxxxxxxx() 第三:创建线程的时候,第二个参数使用这个属性 第四:销毁属性 ...原创 2019-06-08 10:31:07 · 209 阅读 · 0 评论 -
把一个二进制文件设置为命令模式
把一个二进制文件设置为命令模式(任意位置都可以运行且不用输入路径)临时设置:export PATH=$PATH:~/test42、永久设置把一个二进制文件设置为命令模式(任意位置都可以运行且不用输入路径) (1)把export PATH=$PATH:~/test4 加入~/.bashrc文件里面 gedit ~/.bashrc (2)让配置文件立即生效 source ~/....原创 2019-06-08 10:37:05 · 316 阅读 · 0 评论 -
线程笔记
1.程序:是二进制文件,他存储在电子磁盘(物理内存)进程:运行中的程序,系统会分配资源(管理所有打开文件的结构体,信号,虚拟内存…),系统分配资源最小单位线程:在进程里面可以创建多个线程,同一个进程里面的线程是共用一套系统资源,系统调度的最小单位2.线程的创建:(1)就是在进程里面分配了一个新的任务结构体(2)同一个进程里面的线程是共用一套系统资源(管理所有打开文件的结构体,信号,虚拟内...原创 2019-06-08 11:03:11 · 80 阅读 · 0 评论 -
符号优先级1题
unsigned char i=0x80;printf(“0x%x\n”, ~i>>3+1);//无符号16进制输出char ci=0x80;printf(“0x%x\n”, ~ci>>3+1);解析:取反操作前,字符型数据会自动转成整形即 i = 0x00000080~i 为 0xffffff7f~i>>3+1 由于+号运算符优先级比>&...原创 2019-06-09 23:11:29 · 454 阅读 · 0 评论