- 博客(33)
- 收藏
- 关注
原创 结构体和联合体 的区别
struct和union都是由多个不同的数据类型成员组成;同一时刻,struct中的数据成员可以都存在,union中的数据成员只能存放被选中的那个;struct的大小是所有数据成员的大小之和,union的大小等于其数据成员中最大的那个;对于union的不同成员赋值,将会对其他成员重写,原来的值就不存在;struct的成员之间就互不影响。
2017-08-05 22:09:30
639
原创 内存对齐正式原则
1、数据类型自身的对齐值,基本数据类型的自身对齐值,等于sizeof(基本数据类型);2、指定对齐值,“#pragma pack(value)”,按照value的值对齐,如8字节或者16字节;3、结构体或者类的自身对齐值,其成员中自身对齐值最大的那个值;4、数据成员、结构体和类的有效对齐值 ,自身对齐值和指定对齐值中最小的那个值。
2017-08-05 21:53:00
322
原创 内存分配方式
内存分配方式有三种 :1.从静态存储区分配;内存在编译阶段即分配好,这块内存在整个程序运行过程中都存在,如全局变量和static变量等;2.在栈上分配,特点是效率高,缺点是分配的内存容量有限。函数内局部变量的分配都在栈上;3.在堆上分配,也称为动态内存分配,生存周期由程序员自己决定,如malloc和new、free和delete等。
2017-08-05 21:37:38
302
原创 内存管理概述
内存管理目的是快速、高效地分配并在适当的时候释放和收回内存。也就是探究你的数据具体放在哪里的问题。内存空间分为几个段,从低地址到高地址分为代码段、数据段、堆栈段。代码段顾名思义就是放代码的;整体的数据段分为数据段、初始化全局变量区、未初始化全局变量区;malloc或者new的内存放置在堆上;系统分配的内存放在栈上。
2017-08-05 21:27:22
237
原创 停车场
#include#include#define OK 0 #define ERROR -1 int gettime(){struct tm *ptr;time_t t;t=time(NULL);return t;}int interface(){printf("\t\t**********Welcom to ou
2016-12-18 22:33:41
430
原创 将十进制转换成八进制
#include int main(){int n; int a[12]={0}; //必须初始化,不然输出乱码printf("please input number\n");scanf("%d",&n);
2016-12-09 23:48:19
3315
原创 结构体的简单理解
首先,结构体也是一种数据类型,和int,char等一样;但它更像一个集合,结构体当中还包括很多成员,这些成员可以是相同的数据类型,也可以是不同的数据类型;因为结构体是一种数据类型,所以可以定义数据体变量,变量当然也可以初始化,还可以被引用; 数据体变量只能放一组数据,要放多组数据可以用结构体数组,可以按照数组的方式来理解,只不过一个元素当中不再是单个数据,而是多个数据,每一个元素都是结构
2016-12-06 23:56:45
1012
原创 输出乘法口诀
#includeint main(){ int i,j; int sum; //定义结果 for(i=1;i { for(j=i;j{ sum=i*j;
2016-12-05 21:37:49
355
原创 用函数实现字符数组连接
#includechar str_cat(char *str1, const char *str2) //定义函数{ int i = 0; int j = 0; while(*(str1+i) != '\0') /
2016-12-04 22:52:39
946
原创 指针实现strlen函数
#includeint len(char *str) //定义一个函数{ int i = 0; while (*(str + i)) //用while判断字符数组元素不为0 { i++;
2016-12-03 22:30:03
4067
原创 指针实现字符串比较函数strcmp
#includeint strcmp(char *str1, char *str2){ while(*str1 == *str2) //比较两个字符串 { if(*str1 == '\0') { return 0; } str1++;
2016-12-02 23:54:38
18288
4
转载 指针实现字符串复制
void str_cat(char *deststr, char *srcstr){ char *dtemp = deststr; char *stemp = srcstr; while(*dtemp != '\0') { dtemp++; } while(*srcstr != '\0') {
2016-12-01 23:20:51
1319
原创 指针实现字符串复制
void str_copy(char* dest_str, char* src_str){ char* stemp = src_str; char* dtemp = dest_str; whie(*stemp!='\0') { *dtemp = *stemp; stemp++; dtemp++;
2016-11-30 22:52:41
6760
原创 两个指针变量的减法
#includeint main(int argc, char* argv[ ]){ int data[4] = {1,2,3,4}; int *iptr1 = &data[0]; int *iptr2 = &data[1]; int val; val = iptr2 - iptr1; printf("Distrance is%d
2016-11-29 22:33:13
3672
1
原创 使用函数的一个简单例子
要求输出一个四位数,保证它是一个完全平方数的同时,第一位加第三位等于10,第二位乘以第四位等于12;includeint pf(int i) //定义函数{ int k; for(k=10;k { if((i/k==k)&&(i%k==0
2016-11-28 22:19:57
789
原创 输出1到num当中所有数字中1的个数
#includeint main(){ int i; int num; int count = 0; scanf("%d",&num); int t; for(i = 1; i { t = i; while(t) { if
2016-11-27 00:05:54
465
原创 输出一个字符串数组的实际长度
#includeint main(){ char s[10]={'1','x','d','c'}; int i; for(i=0;i { if(s[i]=='\0') { break; } } printf("%d",i); retur
2016-11-25 23:43:28
1377
1
原创 用字符指针变量指向一个字符串,然后输出字符及其长度
#include#include // 要使用strlen函数int main(){ char *p; p = "hello!"; printf("%s",p); printf("\nThe length is:%d\n",strlen(p)); retur
2016-11-24 23:31:10
6613
1
原创 二维数组的输入输出及初始化
一维数组的输入输出只有一个for循环就可以搞定,但是二维数组的输入输出要用到for语句嵌套,如:定义一个3行5列的二维数组,并输入输出;#includeint main(){ int a[3][5]; int i, j; printf("input:"); for (i = 0; i { for
2016-11-23 22:36:02
11262
原创 数组和指针的一个例子
#iincludeint main(){ int a[6] = {0,10,20,30,40,50},*pa; //定义数组和指针; pa = &a[0]; printf("%d",*pa); //指向a[0],*pa相当于&a[0]; printf("%d",*++pa);
2016-11-22 23:40:50
460
原创 快速找到一串数字中第一个最大的数和第二个最大的数
#include#define N 3 //定义一个字符常量(不一定是3)int main(){ int a[N]; int i; int t; for(i = 0; i { scanf("%d",&a[i]); } int max;
2016-11-21 21:52:38
2919
原创 关于指针的简单理解
首先,指针和int、float一样是一种数据类型;它也要有一个变量,称为指针变量,但是这个指针变量里存放的是另一个变量的地址;比如: int *a; a=&bookname; *p整体称为指针变量,a为指针变量名,“ * ”为指针运算符,bookname为另一个变量,这个变量的类型必须和*a的类型一致,为int类型; &bookname表示为bookname的地址,把这
2016-11-20 23:24:34
242
原创 用shell脚本打印0到50zhiji之间的偶数
#!/bin/bash #必须要有i=0 while [ $i -le 50 ] #从0到50do let z=$[$i % 2] #除以2取余 if [ $z -eq 0 ] #余数和0比较 t
2016-11-18 23:25:47
1684
原创 虚拟机文件夹共享到主机
首先打开主机》打开D盘》新建文件夹a》打开虚拟机》点击“虚拟机”》点击设置》点击“属性”》点击文件夹共享》在右边界面添加文件夹a》点击确定》打开虚拟机终端》输入命令cd /mnt/hgfs/a即可
2016-11-17 22:56:30
387
1
原创 shell脚本的一个简单运算
从终端读取1到100 的数字,测试大小,如果小于30,则显示“该数小于30”,如果大于30并且小于80,则输出“该数大于30且小于80”,如果大于80,则显示“该数大于80”;#!/bin/bash #必须要有read i #
2016-11-15 23:33:42
724
原创 一维数组的简单理解
今天看了数组的相关知识,对数组有了重新的认识,数组它就相当于一个存储空间,用来存放一些相同类型的常量;int a[10]我的理解是分配了一个空间,这个空间可以存放十个整形常量,并且空间的命字叫做a;【】中可以是一个常量值,也可以是一个表达式,比如[2*5];int a[10]中的数据表示可以用加下标的方式表示,比如依次叫a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、
2016-11-14 23:43:20
818
原创 基本数据类型知识汇总
今天讲的知识比较多,这里总结一下: 先讲了常用单位,有位、字节、字,位只有0或者1,一个字等于八位,具体的一个字等于多少位要看在什么机器上跑,机器是多少位的一个字就是多少位; 接着讲了数据基本类型,有整形、浮点型,整形又分基本整形、长、短整形和无符号整形;浮点型有称实型,分单精度和双精度,单精度float有效值只有七位,double一般有十五位,一般不用浮点型比较大小,因为它只
2016-11-13 23:47:04
341
原创 shell脚本中比较并输出最大值
#!/bin/bash echo " input first parm:" read a echo " input second parm:" read b echo " input third parm:" if [ $a -gt $b -a $a -gt $c ] then echo "max is $a"
2016-11-12 23:52:17
11310
原创 一些简单操作
grep 'printf' hello.c是显示hello.c文件中的以printf 为开始的行;man加 命令名表示要查找Linux的命令的相关信息和完整说明; ls -F表示显示目录下的所以文件,并且用*加在可执行的文件后面,用/加在目录后面;cat hello.c 表示显示hel0l.c的具体内容;alias md='mkdir'表示用md来替代并简化mkdir命令;
2016-11-09 23:20:38
290
原创 vi的简单操作
vi有三种模式:命令行模式,插入模式,末行模式。按“i”切换到插入模式;esc 切换到命令行模式;行数n加G是光标显示到n一行;/加要查找的内容是从光标处向下查找,向上查找则是?加内容;gg光标显示到最后一行;nyy是从光标向后n 行复制,按P粘贴;ndd是删除从光标向后的n行;u是撤销操作;U是撤销所有操作;shift加:再加x是退出。
2016-11-08 23:28:53
224
原创 最大值输出
#includeint main(){ float a,b,c,max; printf("inputa,b,c"); scanf("%f%f%f",&a,&b,&c); if(a>b) { max=a; } else { max=b;
2016-11-07 22:23:16
836
原创 第一天博客
第一次写博客 就写一点简单的。今天学了LinuxC的一些基础,列如Linux简介·系统结构·文件操作可能第一次接触,觉得那么多指令好难记,编程输出一个“Hello,world!”倒不是是什么问题,很简单,下面附上代码:#includeint main(){ printf("Hello,world!/n"); return 0;} 接下来对重定向
2016-11-06 22:23:56
183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人