
c语言
Oligay
苏嵌
展开
-
关键字(sizeof),数组,指针,字符串的注意点
1 字符串(字符串结尾标识‘\0’)2 sizeof(关键字)(1)sizeof是(单目运算符)关键字不是函数;(2)sizeof是求数据类型所占空间大小,计算时包括‘\0’; (3) strlen是求字符串长度,以‘\0’结尾#include#includeint main(){char *c = "abcdef";//char * 为指针指向原创 2017-07-06 13:23:29 · 322 阅读 · 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 · 908 阅读 · 0 评论 -
一些运算的位操作
1最有效的2乘以8的方法2一般直接进行乘法操作符可以进行2与8的相乘,但这种方法并非最优,通过位移方法比较高效。CPU支持位运算且效率最高,所以操作2乘以8的最有效方法为2引申快速求一个整数的7倍或9倍。 (x(xx左移3为相当于x乘以8.再加减x就完成了7或9倍。2用位操作求两个数的平均值一般而言求平均值就是两个原创 2017-07-22 20:49:49 · 241 阅读 · 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 · 233 阅读 · 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 · 259 阅读 · 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 · 363 阅读 · 0 评论 -
用SQL语句操作数据(库)表:如增,删,改,查,彻底搞清SQL语句
同志们注意哟:学习SQL的好网站:http://www.w3school.com.cn/sql/sql_distinct.aspSQL语句的的while 循环declare @i int,@j intset @i=1while @ibegin (select COUNT(sc.score) as result from sc where sc.s转载 2017-07-26 23:03:53 · 535 阅读 · 0 评论 -
进程、线程间通信方式
首先来看一道题目:多线程之间的通信方式有哪些(C)A. 互斥锁,信号灯,条件变量 B. 套接字,共享内存,消息队列C. 全局变量,消息队列,事件 D.以上全是A和C的争议较大 老师说这里A选项是线程同步技术但是我对这个选项抱有疑问我觉得选A.下面再具体介绍下进程、线程间的通信方式:之前一直对进程间和线程间的通信方式搞混,今天对它们总结一下。一、进程原创 2017-07-26 23:00:51 · 269 阅读 · 0 评论 -
有趣的if语句
今天看到一个有趣的if语句,拿出来和大家分享一下,也许以后会多一种条件判断的方式/*题目:int main(){ if() { printf("Hello "); } else { printf("World !!!"); } return 0;}在if里面请写入语句 使得打印出 hello world。*/#include #include int原创 2017-08-05 23:28:17 · 854 阅读 · 0 评论 -
函数指针与指针函数
函数指针和指针函数经常是很多初学者感到疑惑的地方,其实这两个是完全不同的概念。指针函数 指针函数就是返回值为指针类型的函数。函数指针 指针函数的概念其实挺简单的,关键是函数指针,这个概念之前一直是我头疼的地方,每次看函数指针都是一知半解。看函数指针的时候,出现的最多的是typedef和函数指针一起出现: typedef return_type (*def原创 2017-08-05 23:37:23 · 173 阅读 · 0 评论 -
static、const、extern对比总结
今天学了几个关键字,了解了它们的用法,在接下来的学习中还需要继续熟悉练习。static: 1、全局静态变量:作用范围局限于它的源文件,只有本文件内的代码才可以访问,在其他文件内不可见。 2、局部静态变量:局限于特定函数,但出作用于不释放,在函数体内的静态变量的值也能够维持。 3、静态函数:作用范围仅限于它的源文件,只有本文件内才能调用,函数名在其他文件不原创 2017-08-05 23:41:27 · 259 阅读 · 0 评论 -
C语言同学录(通讯录)的实现
这个很久以前就完成了,一直没贴出来。这个同学录实际上就是通讯录,使用链表实现,也算是对链表的一种运用吧。具体功能看Menu函数。#include#include#includetypedef struct Student{ char name[20]; char tel[20]; char qq[20]; char address[20]; struct Stu原创 2017-08-06 21:49:50 · 4684 阅读 · 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 · 377 阅读 · 0 评论 -
网络编程基础知识巩固
1. makefile的作用: makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefil原创 2017-08-06 22:08:27 · 309 阅读 · 0 评论 -
线程总结
1.线程概念线程是进程的一个实体,是CPU调度和分派基本单位,比进程更小能独立运行的基本单位一个线程包括以下几部分:1)一个指向当前被执行指令的指令指针2)一个栈3)一个寄存器集合4)一个私有的数据区2.多线程优点1)易于调度2)提高并发性,线程可方便有效的实现并发3)开销小,创建线程比进程快4)有利于发挥多处理器功能,通过创建多线程,每原创 2017-08-02 23:52:49 · 232 阅读 · 0 评论 -
进程总结
1.进程通信的目的1)数据传输2)共享数据3)通知事件4)资源共享5)进程控制2.进程间的通信方式1)管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2)有名管道: 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。3)信号量: 信号量是一个计数器,可以用来控制原创 2017-08-02 23:27:21 · 158 阅读 · 0 评论 -
程序员笔试的几个区别
1. 大端与小端CPU存储方式大端模式:低字节 放高地址;高字节 地低址放小端模式:低字节 放低地址;高字节 高低址放2.指针和数组指针可随时指向任意类型,而数组在静态存储区被创建;所占字节不同;指针只能进行==和!=运算;数组不能赋等号但是可以strcmp;3.sizeof与strlensizeof 求数据类型所占空间大小;(关键字、单目运算符)str原创 2017-07-12 00:20:37 · 456 阅读 · 0 评论 -
32位和64位分配空间内存对齐
32位编译器4个字节,64位编译器8个字节;struct T{ char a; //1int *d; //4int b; //4int 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 · 2143 阅读 · 2 评论 -
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 · 1703 阅读 · 0 评论 -
关于if条件语句
今天写程序时发现一个问题,就是在if条件语句中程序跳不出来,只能一直执行成立的条件。不论输入正确的还是不正确的条件,始终结果都是输出正确的条件的结果。这我就很纳闷,if条件语句也不是循环语句,为什么跳不出来呢? 先看看我今天写的程序吧,要求随意输入三角形的三边边长,判断能否成为三角形,如果是三角形求它的面积。#include #include int main(){原创 2016-11-16 22:36:43 · 1133 阅读 · 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 · 488 阅读 · 0 评论 -
脚本
如果你有一系列经常使用的Linux命令,你可以把他们存储在一个文件中。Shell可以读取这个文件并执行其中的命令。这样的文件被称为脚本文件。这样可以省时省事,做到事半功倍的效果。1注释符# 除了#!/bin/bash里的#特殊2美元符 $ 变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来3单引号 ''原创 2016-11-14 21:55:26 · 224 阅读 · 0 评论 -
c语言的基本类型与表达式
c语言的基本类型有四种,基本类型,构造类型,指针类型,空类型。基本类型:字符型char,数值类型分为整形和实型,实型有float,double.构造类型:数组类型【】、结构体类型struct、共用体类型union和枚举类型enum。指针类型:*空类型:void常量和变量:常量:直接常量分 整型(十、八、十六进制)、实型(十进制,指数)、字符型、字符窜型符号常量:原创 2016-11-18 23:03:24 · 4597 阅读 · 0 评论 -
vi 的基本操作指令
x 删除光标所在的字符dw 删除光标所在的单词cw 替换一个单词/yw 将光标所在单词拷入剪贴板 /xxx 向后查询?xxx 向前查询gcc -o xxx xxx.c 编译xxx并改名为xxx.ccp -r xxx(目录 里面可包含文件) / xxx(指定目录) 拷贝mv xxx xxx(目录) xxx(文件) xx原创 2016-11-10 22:31:07 · 342 阅读 · 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 · 426 阅读 · 0 评论 -
关于对指针理解
在C语言中,内存单元的地址称为指针,打个比喻。* 代表万能钥匙,0x2000地址代表门牌号,&取地址符。i_pointer-----指针变量,它的内容是地址量*i_pointer----指针的目标变量,它的内容是数据&i_pointer---指针变量占用内存的地址i_pointer (内容位地址量) = &i(取i地址) = &(*i_pointer)(取这个指针原创 2016-11-25 23:01:48 · 264 阅读 · 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 · 776 阅读 · 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 · 8440 阅读 · 0 评论 -
c语言进程控制编程的总结
进程是一个具有独立功能的程序运动活动。每个进程都有一个id;进程(pid标识进程的唯一数字) 父进程(ppid) 启动进程(uid)。进程4个特点:并发性,独立性,异步性,动态性。进程可能会锁死。进程的创建:(fork())由父进程创建子进程,子进程再创子进程。例如:#include#include#includeint main(){ pid原创 2017-06-29 15:22:53 · 560 阅读 · 0 评论 -
简单的升降排序与冒泡排序
升降排序#includeint 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 · 822 阅读 · 0 评论