随笔分类 -  C语言

作为学习编程,C语言是必须技能,可是为啥我的总是一般
摘要:1,带参数的main函数#include int main(int argc,char *argv[]) { int i; for(i=0;i void test (int a,...) { printf("paral,a:%d\n",a); printf("para2 :%s\n",(char *)*(&a+1)); //因为最后得到的是字符串的首地址,所以变成指针 printf("para3 : %lf\n",*(double *)(&a+2)); //后一个*号是把值定义为指针,前一个定义为取出地址的值 prin 阅读全文
posted @ 2013-10-07 12:12 泛起的鱼 阅读(648) 评论(0) 推荐(0)
摘要:#include #include #include void eat_space(char *s){ int i = 0, j = 0; while ((s[i] = s[j++]) != '\0') if (s[i] != ' ') i++;}double expr(char *);char *extract(char *s, int *index){ int cnt = 0; int start_pos = *index, len; char *sub_expr = NULL; while (s[*index] !=... 阅读全文
posted @ 2013-10-07 11:48 泛起的鱼 阅读(353) 评论(0) 推荐(0)
摘要:1,typedef和define区别#include #define INT32 int #define COUNT 10 //typedef 是编译器关键字,和#define是完全不同的 //typede 是会令编译器做类型推导, //#define 是预处理关键字,预处理后即处理完毕 typedef int int32; //带参数宏(按照参数进行宏替换) #define max(a,b) (((a)>(b))?(a):(b)) int main(void) { int i; INT32 a=3; int32 b=5; int m; for(i=... 阅读全文
posted @ 2013-10-07 11:45 泛起的鱼 阅读(935) 评论(0) 推荐(0)
摘要:1,结构体以及两种用法#include struct s { int a; int b; char s[6]; }; //结构体声明int main(void) { struct s obj={ .a=5, .b=8, .s="hello", }; //结构体初始化 printf("sizeof obj=%u\n",sizeof obj); //结果为16是两个int型占8个字节,最后一个数组要凑齐被4整除的边界只能是8,所以有16个字节。 printf("&obj = %p,&obj.a=%... 阅读全文
posted @ 2013-10-07 10:50 泛起的鱼 阅读(1577) 评论(0) 推荐(0)
摘要:1,malloc动态内存存储#include #include #include //动态存储 int main(void) { int *p=NULL; int *tmp=NULL; int n; int ret; int count=0; while(1) { retry: printf("input num:"); ret=scanf("%d",&n); while(getchar()!='\n');//清空输入输出缓存区里面的东西 if(ret==0) ... 阅读全文
posted @ 2013-10-06 09:46 泛起的鱼 阅读(602) 评论(0) 推荐(0)
摘要:1,malloc返回的void *类型指针不可做更改#include #include int main(void) { int *p=malloc(20); p++; //p已经变化过,因此是 无效的释放 free(p); return 0; }结果:报错*** Error in `./a.out': free(): invalid pointer: 0x0156000c *** Aborted (core dumped) 2,free双重释放#include #include //双重释放,p的值不变,... 阅读全文
posted @ 2013-09-05 17:19 泛起的鱼 阅读(1772) 评论(0) 推荐(0)
摘要:1,使用6级指针访问一个整数,使用隐式内存分配中转#include #include //构建六级指针访问一个整数 //使用隐式内存分配中转 //这个程序只是做人工分配内存的目的 int main(void) { int ******p=NULL; int a=16; p=malloc(sizeof(int *****));//同下 *p=malloc(sizeof(int ****));//同下 **p=malloc(sizeof(int ***));//同下 ***p=malloc(size... 阅读全文
posted @ 2013-09-05 16:01 泛起的鱼 阅读(428) 评论(0) 推荐(0)
摘要:1,二级指针定义#include { //int** p; //p2是二级指针,是一个变量, //p2本身是int **类型 //p2 指向 int * 类型 int **p2=NULL; int *p1=NUL; int a=8; p1=&a; p2=&p1;// p2 --------》*p2 ----------》 **p2// int** int * int printf(“a=%d, **p2=%d\n”,a,**p2); ... 阅读全文
posted @ 2013-09-05 14:27 泛起的鱼 阅读(1231) 评论(0) 推荐(0)
摘要:1,指针的基本用法1#include // 指针和数组都是复合类型, 他们从基本类型// 或者自定义类型派生.int main(void){ // 当定义指针变量p 时, int * --> 这里的 * // 不是运算符, 而是 类型定义说明符. // 定义了一个变量p // p 是 int * 类型. p 指向 int 类型. int *p = NULL; int a = 8; // 此时, p 指向 a p = &a; printf("sizeof p = %u\n", sizeof(p)); printf("&p = %p, ... 阅读全文
posted @ 2013-09-04 17:09 泛起的鱼 阅读(641) 评论(0) 推荐(0)
摘要:1,字符加法#include #include void reverse(char s[]) //反向遍历{ int i; int len = strlen(s); for (i = 0; i len2 ? len1 : len2;//选取最大的作为循环长度 reverse(s1);//切换高位和地位的位置 reverse(s2);//切换高位和地位的位置 int i; int digit, carry;//digit是存储当前位数相加的值 for (i = 0, digit = 0; i int my_strlen(char s[]){ ... 阅读全文
posted @ 2013-09-04 15:36 泛起的鱼 阅读(687) 评论(0) 推荐(0)
摘要:1,数组定义#include int main(void){ // 定义数组时需要确定: // 1. 数组元素的类型. // 2. 显式/隐式确定数组元素个数. int a[6] = { 12, 25, 36, 8, 45, 66 }; // 隐式确定数组元素个数 int b[] = { 3, 4, 5, 18, 23, 99}; // C99 // 在具有初始化式时, 数组中剩下的元素被初始化为 0 int c[] = { [0] = 36, [4] = 82 }; int i; for (i = 0; i int main(... 阅读全文
posted @ 2013-09-04 13:39 泛起的鱼 阅读(681) 评论(0) 推荐(0)
摘要:1.。。。。。。。。。。。。。。。。。。。。#include void hanoi(char from, char pass, char to, unsigned n){ if (n == 1) { printf("%c ==> %c\n", from, to); } else { hanoi(from, to, pass, n - 1); hanoi(from, pass, to, 1); hanoi(pass, from, to, n - 1); }}void hanoi1(char... 阅读全文
posted @ 2013-09-01 19:20 泛起的鱼 阅读(230) 评论(0) 推荐(0)
摘要:1,函数返回值与传入参数#include void foo(void);// 如果不声明返回值类型, 那么返回值类型默认为intbar(void);// 声明没有带参数, 那么调用时可以传递任意参数.void test();//void test1(void);int main(void){ foo(); printf("world.\n"); bar(); test(3.14, "hello", 123); //test1(1, 3.14, "hello"); return 0;}void foo(void){ printf(&qu 阅读全文
posted @ 2013-08-30 11:42 泛起的鱼 阅读(584) 评论(0) 推荐(0)
摘要:这个仅作为练习扩展使用,贴出代码,作为以后复习,不直接写结果。因为要自己推出#include int main(void){ int score; printf("pls input a score: "); scanf("%d", &score); if (score 100) { printf("wrong. score from 0 to 100.\n"); } else if (60 int main(void){ int i, j; i = 1; while (i int main(void){ ... 阅读全文
posted @ 2013-08-23 23:07 泛起的鱼 阅读(1004) 评论(0) 推荐(0)
摘要:1,if语句 1 #include 2 3 /* 4 *if (expr) 5 * stat 6 *else if (expr) 7 * stat 8 *else 9 * stat10 *11 *expr: expression12 *stat: statement -> expr; | { ... } 13 */14 15 #define EPISILON 0.000000116 17 int main(void)18 {19 double d = 5.0;20 21 // 对浮点数进行判断, 最好给一个判定范围22 /... 阅读全文
posted @ 2013-08-23 22:39 泛起的鱼 阅读(350) 评论(0) 推荐(0)
摘要:1,九九乘法#include int main(void){ int i, j; for (i = 1; i int main(void){ int a = 3, b = 5; printf("after 0 swap, a = %d, b = %d\n", a, b); printf("------------------\n"); int t; t = a; a = b; b = t; printf("after 1 swap, a = %d, b = %d\n", a, b); printf("------------ 阅读全文
posted @ 2013-08-22 00:06 泛起的鱼 阅读(196) 评论(0) 推荐(0)
摘要:1,sizeof用法以及各个类型占据的字节大小#include int main(void){ char ch; int i; long l; long long ll; float f; double d; long double ld; printf("size of char : %u\n", sizeof(ch)); printf("size of int : %u\n", sizeof(int)); printf("size of long : %u\n", sizeof l); ... 阅读全文
posted @ 2013-08-20 23:42 泛起的鱼 阅读(548) 评论(0) 推荐(0)
摘要:输入vim 1.c 编辑c文件will@will-Inspiron-N4010:~/ex/c/1$ vim 1.c按i 进入插入模式,输入一下字符#include int main(void){ printf("hello \n");}输入完成后,Shift + ; 得到命令行,输入wq!,保存强制退出 。运行gcc 1.c -o 1will@will-Inspiron-N4010:~/ex/c/1$ gcc 1.c -o 1生成可执行文件,运行./1 , 即可运行完整程序得到hello 阅读全文
posted @ 2013-08-20 22:44 泛起的鱼 阅读(191) 评论(0) 推荐(0)