c语言
Oligay
苏嵌
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
有趣的if语句
今天看到一个有趣的if语句,拿出来和大家分享一下,也许以后会多一种条件判断的方式 /*题目: int main() { if() { printf("Hello "); } else { printf("World !!!"); } return 0; } 在if里面请写入语句 使得打印出 hello world。 */ #include #include int原创 2017-08-05 23:28:17 · 895 阅读 · 0 评论 -
关键字(sizeof),数组,指针,字符串的注意点
1 字符串(字符串结尾标识‘\0’) 2 sizeof(关键字) (1)sizeof是(单目运算符)关键字不是函数; (2)sizeof是求数据类型所占空间大小,计算时包括‘\0’; (3) strlen是求字符串长度,以‘\0’结尾 #include #include int main() { char *c = "abcdef";//char * 为指针指向原创 2017-07-06 13:23:29 · 409 阅读 · 0 评论 -
c语言关键字static,const,extern,struct,enum,union
static: 1全局静态变量:作用范围局限于他的源文件,只有本文件内可用,变量名在其他文件不可用; 2局部静态变量:局限于特定函数,出作用域不会释放。 3静态函数:和全局静态变量差不多 4存放位置:程序开始,存放在全局数据区,结束释放空间,默认初始化为0,使用时可变其值。 #include static int j; // 静态全局变量 int fun1(void) {原创 2017-06-30 15:29:24 · 982 阅读 · 0 评论 -
一些运算的位操作
1最有效的2乘以8的方法 2 一般直接进行乘法操作符可以进行2与8的相乘,但这种方法并非最优, 通过位移方法比较高效。CPU支持位运算且效率最高,所以操作2乘以 8的最有效方法为2 引申快速求一个整数的7倍或9倍。 (x (x x左移3为相当于x乘以8.再加减x就完成了7或9倍。 2用位操作求两个数的平均值 一般而言求平均值就是两个原创 2017-07-22 20:49:49 · 307 阅读 · 0 评论 -
mysql数据库的简单操作
在虚拟机中的操作 1. sqlite3 text.db(文件名) 没有则自动创建 2. .tables 查看表 3. 创建表 create table student ( ID INTERGER, name TEXT, sex TEXT, age INTEGER, primary key(ID)原创 2017-08-09 14:12:31 · 267 阅读 · 0 评论 -
几个常见字符串函数的实现
1.const char * pstrstr(const char *haystack, const char *needle) { const char *p1, *p2; p1 = haystack; p2 = needle; while (*haystack != '/0' && *needle != '/0') { if (原创 2017-08-03 00:16:01 · 304 阅读 · 0 评论 -
Linux下两个常见的编译错误
undefined reference to `abc' collect2: ld 返回 这种错误一般因为手误,把某个函数编写错误导致的, 不如void sum()写成void smu(),有时候手敲得快, 也没注意尤其是那些命名较长的 #include void adc(char *str) { int a; int b; for (a=b=0; str[a原创 2017-07-26 22:48:33 · 415 阅读 · 0 评论 -
用SQL语句操作数据(库)表:如增,删,改,查,彻底搞清SQL语句
同志们注意哟:学习SQL的好网站:http://www.w3school.com.cn/sql/sql_distinct.asp SQL语句的的while 循环 declare @i int,@j int set @i=1 while @i begin (select COUNT(sc.score) as result from sc where sc.s转载 2017-07-26 23:03:53 · 587 阅读 · 0 评论 -
进程、线程间通信方式
首先来看一道题目: 多线程之间的通信方式有哪些(C) A. 互斥锁,信号灯,条件变量 B. 套接字,共享内存,消息队列 C. 全局变量,消息队列,事件 D.以上全是 A和C的争议较大 老师说这里A选项是线程同步技术 但是我对这个选项抱有疑问我觉得选A. 下面再具体介绍下进程、线程间的通信方式: 之前一直对进程间和线程间的通信方式搞混,今天对它们总结一下。 一、进程原创 2017-07-26 23:00:51 · 303 阅读 · 0 评论 -
程序员笔试的几个区别
1. 大端与小端 CPU存储方式 大端模式:低字节 放高地址;高字节 地低址放 小端模式:低字节 放低地址;高字节 高低址放 2.指针和数组 指针可随时指向任意类型,而数组在静态存储区被创建; 所占字节不同; 指针只能进行==和!=运算; 数组不能赋等号但是可以strcmp; 3.sizeof与strlen sizeof 求数据类型所占空间大小;(关键字、单目运算符) str原创 2017-07-12 00:20:37 · 491 阅读 · 0 评论 -
函数指针与指针函数
函数指针和指针函数经常是很多初学者感到疑惑的地方,其实这两个是完全不同的概念。 指针函数 指针函数就是返回值为指针类型的函数。 函数指针 指针函数的概念其实挺简单的,关键是函数指针,这个概念之前一直是我头疼的地方,每次看函数指针都是一知半解。看函数指针的时候,出现的最多的是typedef和函数指针一起出现: typedef return_type (*def原创 2017-08-05 23:37:23 · 208 阅读 · 0 评论 -
static、const、extern对比总结
今天学了几个关键字,了解了它们的用法,在接下来的学习中还需要继续熟悉练习。 static: 1、全局静态变量:作用范围局限于它的源文件,只有本文件内的代码才可以访问,在其他文件内不可见。 2、局部静态变量:局限于特定函数,但出作用于不释放,在函数体内的静态变量的值也能够维持。 3、静态函数:作用范围仅限于它的源文件,只有本文件内才能调用,函数名在其他文件不原创 2017-08-05 23:41:27 · 293 阅读 · 0 评论 -
C语言同学录(通讯录)的实现
这个很久以前就完成了,一直没贴出来。 这个同学录实际上就是通讯录,使用链表实现,也算是对链表的一种运用吧。 具体功能看Menu函数。 #include #include #include typedef struct Student{ char name[20]; char tel[20]; char qq[20]; char address[20]; struct Stu原创 2017-08-06 21:49:50 · 4817 阅读 · 5 评论 -
多线程实现相关函数
1 线程的创建 pthread_create 函数用于创建线程 表头文件:#include 定义函数:int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void*(*start_rtn)(void),void*restrict arg) 函数说明:pthread_t *原创 2017-08-07 11:26:19 · 459 阅读 · 0 评论 -
网络编程基础知识巩固
1. makefile的作用: makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefil原创 2017-08-06 22:08:27 · 347 阅读 · 0 评论 -
线程总结
1.线程概念 线程是进程的一个实体,是CPU调度和分派基本单位,比进程更小能独立运行的基本单位 一个线程包括以下几部分: 1)一个指向当前被执行指令的指令指针 2)一个栈 3)一个寄存器集合 4)一个私有的数据区 2.多线程优点 1)易于调度 2)提高并发性,线程可方便有效的实现并发 3)开销小,创建线程比进程快 4)有利于发挥多处理器功能,通过创建多线程,每原创 2017-08-02 23:52:49 · 268 阅读 · 0 评论 -
进程总结
1.进程通信的目的 1)数据传输 2)共享数据 3)通知事件 4)资源共享 5)进程控制 2.进程间的通信方式 1)管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 2)有名管道: 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 3)信号量: 信号量是一个计数器,可以用来控制原创 2017-08-02 23:27:21 · 209 阅读 · 0 评论 -
简单的升降排序与冒泡排序
升降排序 #include int main() { int a[5] = {1,78,55,23,8}; int i,j; int temp = 0; // printf("input 5 num\n"); //scanf("%d",&a[i]); for (i = 1; i { for(j = 0;原创 2017-06-30 09:49:15 · 862 阅读 · 0 评论 -
linux 系统中c语言的数学库
库是预编译的目标文件(object files)的集合,它们可被链接进程序。静态库以后缀为‘.a’的特殊的存档文件(archive file)存储。 标准系统库可在目录 /usr/lib 与 /lib 中找到。比如,在类 Unix 系统中 C 语言的数学库一般存储为文件/usr/lib/libm.a。该库中函数的原型声明在头文件 /usr/include/math.h 中。C 标准库本身原创 2016-11-15 22:16:27 · 1763 阅读 · 0 评论 -
关于if条件语句
今天写程序时发现一个问题,就是在if条件语句中程序跳不出来,只能一直执行成立的条件。不论输入正确的还是不正确的条件,始终结果都是输出正确的条件的结果。这我就很纳闷,if条件语句也不是循环语句,为什么跳不出来呢? 先看看我今天写的程序吧,要求随意输入三角形的三边边长,判断能否成为三角形,如果是三角形求它的面积。 #include #include int main() {原创 2016-11-16 22:36:43 · 1184 阅读 · 0 评论 -
scanf的注意
scanf函数,与printf函数一样,都被定义在stdio.h里,它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其关键字最末一个字母f即为“格式”(format)之意。 关于scanf的注意: scanf("%d _ %d",&a,&b) scanf("%d%d",&a,&b) _表示空格,在输入时,要按照格式输入 ,在两种格式一样,输入的时候要加空格,不如3原创 2016-11-17 22:02:07 · 520 阅读 · 0 评论 -
脚本
如果你有一系列经常使用的Linux命令,你可以把他们存储在一个文件中。Shell可以读取这个文件并执行 其中的命令。这样的文件被称为脚本文件。这样可以省时省事,做到事半功倍的效果。 1注释符# 除了#!/bin/bash里的#特殊 2美元符 $ 变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来 3单引号 ''原创 2016-11-14 21:55:26 · 249 阅读 · 0 评论 -
c语言的基本类型与表达式
c语言的基本类型有四种,基本类型,构造类型,指针类型,空类型。 基本类型:字符型char,数值类型分为整形和实型,实型有float,double. 构造类型:数组类型【】、结构体类型struct、共用体类型union和枚举类型enum。 指针类型:* 空类型:void 常量和变量: 常量:直接常量分 整型(十、八、十六进制)、实型(十进制,指数)、字符型、字符窜型 符号常量:原创 2016-11-18 23:03:24 · 4705 阅读 · 0 评论 -
vi 的基本操作指令
x 删除光标所在的字符 dw 删除光标所在的单词 cw 替换一个单词 /yw 将光标所在单词拷入剪贴板 /xxx 向后查询 ?xxx 向前查询 gcc -o xxx xxx.c 编译xxx并改名为xxx.c cp -r xxx(目录 里面可包含文件) / xxx(指定目录) 拷贝 mv xxx xxx(目录) xxx(文件) xx原创 2016-11-10 22:31:07 · 396 阅读 · 0 评论 -
编程求 n 这个数有多少个0~9?
简单的分析下1~10 ,有1个0~9; 1~100有10个0~9, 但是会多10个1~9和1个0,所如果n=107的话, 101,102,103,104,105,106,107,会多8个0,所以n=107有18个0~ 9. 如果n=110,那么,1~110,有固定的11个0~9,但是正好多10个0, 与前面1~100多的10个1~9,又形成10个0~9,此时又会多10个1会 再201~原创 2016-11-20 00:04:06 · 536 阅读 · 0 评论 -
关于对指针理解
在C语言中,内存单元的地址称为指针,打个比喻。 * 代表万能钥匙,0x2000地址代表门牌号,&取地址符。 i_pointer-----指针变量,它的内容是地址量 *i_pointer----指针的目标变量,它的内容是数据 &i_pointer---指针变量占用内存的地址 i_pointer (内容位地址量) = &i(取i地址) = &(*i_pointer)(取这个指针原创 2016-11-25 23:01:48 · 323 阅读 · 0 评论 -
编程求一个数n有多少个0~9
关于这个问题,感觉昨天的想法太low了,今天看见同学, 用if完成这个程序,程序写的非常单调而且繁琐,定义是 十个变量,输出是个printf.但是学完数组,感觉瞬间高大 上许多,而且省时省事。 定义一个一维数组,a[10],将0,1,2,3,4,5,6,7,8,9分别放在 数组中,利用for循环计算每个数字出现的个数,而不需要 if的判断。 程序如下: #include原创 2016-11-20 23:10:41 · 829 阅读 · 0 评论 -
单片机蜂鸣器音乐播放
写这篇呢主要是想像大家求助。 uchar code T[49][2]={{0,0},//定义音律49个二维数组 {0xF9,0x1F},{0xF9,0x82},{0xF9,0xDF},{0xFA,0x37},{0xFA,0x8A},{0xFA,0xD8},{0xFB,0x23},{0xFB,0x68},{0xFB,0xAA},{0xFB,0xE9},{0xFC,0x24},{0xFC,0x5B原创 2017-04-17 16:24:18 · 8537 阅读 · 0 评论 -
c语言进程控制编程的总结
进程是一个具有独立功能的程序运动活动。 每个进程都有一个id;进程(pid标识进程的唯一数字) 父进程(ppid) 启动进程(uid)。 进程4个特点:并发性,独立性,异步性,动态性。 进程可能会锁死。 进程的创建:(fork())由父进程创建子进程,子进程再创子进程。 例如: #include #include #include int main() { pid原创 2017-06-29 15:22:53 · 605 阅读 · 0 评论 -
32位和64位分配空间内存对齐
32位编译器4个字节,64位编译器8个字节; struct T{ char a; //1 int *d; //4 int b; //4 int c:16; //2 c:16表示16位2个字节 double e; //8 };T *p; 32 位(4+4+4+4+8) char a 1个字节,为了满足字节对齐还需填充3个字节; int *原创 2017-07-12 18:06:44 · 2236 阅读 · 2 评论
分享