c语言笔记-1
来源:互联网 发布:淘宝的聚划算是正品吗 编辑:程序博客网 时间:2024/06/15 03:27
#include<stdio.h>//定义常量#define NUM 100//外部变量,在该文件中有用,它的存储周期和static修饰的变量一样,在程序运行的整个过程中都会存在。 int outnum = 100;void main(){ printf("外部变量outnum = %d \n",outnum); int outnum = 200;//在定一个和外部变量相同的局部变量 printf("在定一个和外部变量相同的局部变量outnum = %d\n在当前作用域中覆盖了全局变量,在其他的作用域outnum=100\n\n",outnum) ; //c语言的基本数据类型 //定义常量 #define PI 3.1415926 printf("显示常量: \n%d \n%f \n\n\n",NUM,PI); //静态局部变量,在程序执行的整个周期都会存在 static int staticnum = 10; printf("静态局部变量,在程序执行的整个周期都会存在 : %d",staticnum); //c语言变量// signed signednum = 1;// short shortnum = 2; int intnum = 10;// long longnum = 100; float floatnum = 123.2; char charnum = 'a'; double doublenum = 123.23d; char charnums[] = "caoxuekun===曹雪坤"; printf("printf('格式串','表达式1','表达式2'...)\n");// printf("显示int类型的数据 : %d\n",intnum);// printf("显示int类型的数据 : %d\n",intnum); printf("显示int类型的数据 : %d\n",intnum);// printf("显示long类型的数据 : %l\n",longnum); printf("显示float类型的数据 : %f(默认显示小数点后六位)\n",floatnum); printf("显示float类型的数据 : %2.3f(保留三位小数的写法%%.3f)\n",floatnum); printf("显示double类型的数据:%lf\n",doublenum); printf("显示字符型数据:%c\n",charnum); printf("显示字符型的数据:%s \n",charnums); printf("sizeof(类型名)显示如果存储对应类型所需空间大小,返回字节数 : %d \n\n\n\n",sizeof(int)); int i = 0; float f = 2.3; char c[]=""; //从终端输入/* scanf("%d",&i); scanf("%f",&f); scanf("%s",&c); printf("显示输入的值:\n %d \n %.4f \n %s",i,f,c); char charget = getchar();//从终端输入一个字符付给charget变量 putchar(charget);//显示charget变量 */ //c语言中是没有布尔值,1为真,0为假,故逻辑值常用int类型的值代替 if(1){ printf("c语言中是没有布尔值的 1为真,0为假,故逻辑值常用int类型的值代替 \n"); } if(1 == 2) { }else if( 2 == 3) { }else{ printf("if else if else...\n\n"); } //逻辑运算 与 或 非 int bool1 = 1 && 1; int bool2 = 1 || 0; int bool3 = !0; printf("%d %d %d\n\n",bool1,bool2,bool3); //条件表达式 为什么条件表达式不能用在字符串上 int tiaojian1 = (3 > 0) ? 1:2; char tiaojian2 = (3 > 0) ? 'a':'b'; printf("条件表达式: %d %c \n\n\n",tiaojian1,tiaojian2); int switchnum = 2; switch(switchnum){ case 1: printf("c语言的switch 1"); break; case 2: printf("c语言的switch 2 \n\n\n"); break; case 3: printf(""); break; default: break; } int flag = 3; while(flag > 0){ printf("=======while===========\n"); flag--; } printf("\n"); flag = 3; do{ printf("==========do==while============\n"); flag--; }while(flag > 0); printf("\n"); for(flag = 5;flag > 0;flag--){ printf("==========for============\n"); if(flag==2) break; } printf("\n\n\n"); //goto语句格式 /** goto 标识符; 标识符:代码 goto语句的作用: 从goto对应的位置跳转到对应标识符的位置,顺序的执行程序 */ goto caoxuekun; caoxuekun: printf("xxxxxxxxxxxxxxx\n\n\n\n"); //数组 int intarr[] = {3,2,5,7}; int index; printf("sizeof(intarr):获取intarr占用内存的总长度,单位为字节\n在除以sizeof(int):int类型所占的字节数,故为数组的长度\n"); for(index = 0;index < sizeof(intarr) / sizeof(int); index++){ printf("%d ",intarr[index]); } printf("\n\n\n\n"); //方法的调用 test(); //指针 /* 地址的取值范围可能不同于整数的取值范围,所以不能用普通的整数去表示地址 指针变量p存储变量pp的地址的时,我们说p指向pp:指针就是地址,指针变量就是存储地址的变量。 总结: 指针变量的赋值 int *p = 变量地址; 一些等价: p 等价 变量的地址 *p 等价 变量名 */ int ppp = 230; //指针变量的申明 int *pp = &ppp;//把变量ppp的地址付给指针变量pp 此时pp指向ppp *pp相当于ppp的别名(*pp==>ppp pp==>&ppp) int *p = ppp;//把变量ppp的值付给指针变量p int *q = pp;//pp==》&ppp,所以是将pp所指向的地址(ppp 对应的地址)付给q int *qq = *pp;//*pp==>ppp所以相当于 int *qq = ppp; printf("变量ppp在内存中的地址 : %d\n",&ppp); printf("变量ppp的值 : %d\n",ppp); printf("变量pp所指向的地址 : %d\n",pp); printf("指针变量pp的地址 : %d\n",&pp); printf("指针变量pp所指向地址的值 : %d\n",*pp); printf("指针变量q所指向的地址 : %d\n\n\n",q); int pointerIntArr[4] = {1,4,2,7}; int *pia = &pointerIntArr[0]; *pia = 100;//修改数组中下标为0的元素的值 printf("指针指向数组 : %d %d %d %d\n\n",*pia,*(pia+1),*(pia+2),*(pia+3)); //指针遍历数组 for(;pia <= &pointerIntArr[3];pia++) { printf("指针遍历数组 : %d\n",*pia); } printf("\n\n\n"); pia = &pointerIntArr[0]; while(1){ printf("指针遍历数组 : %d\n",*pia++); if(pia == &pointerIntArr[3]){ printf("指针遍历数组 : %d\n",*pia++); break; } }//end of while printf("\n\n\n"); int testarrpoint[10]; *testarrpoint = 100; *(testarrpoint+1) = 200; printf("数组名当作指针 :但数组名只能指向下标为0的,\n不能指向其他。如:testarrpoint++ %d %d\n",testarrpoint[0],testarrpoint[1]); //变长数组 // testarr(200); /* c语言中,字符串使用字符数组存储的,当长度为N的字符串,会转换为长度为N+1的字符数组,末尾用\0结束 eg:"abc" ==> a b c \0 */ char chararrpointer[] = "abcde"; char *charpointer = &chararrpointer[0]; char *charpointer1 = "caoxuekun";//charpointer1指向字符数组下标为0的字符 printf("\n\n\n"); printf("字符指针对应的数据 : %c\n",*charpointer); printf("字符指针对应的地址 : %d\n",charpointer); printf("字符指针与字符串 : %c\n\n\n",*charpointer1); //字符串如果比申明的要短,则用\0代替 //eg: char data[5] = {'1','2','3'};实际为 '1' '2' '3' '\0' '\0' //字符串数组 用二维char数组来写字符串 //这个还有点问题????????????? char stringarr[][2] = {"abc","defg","hij"}; printf("== %c\n",stringarr[0][1]); printf("==== %c\n",stringarr[1][1]); printf("字符串 : %s\n\n\n",stringarr[0]); /* #include <stdio.h> 指示预处理器打开一个叫做stdio.h的文件,并将该文件加入到当前程序当中 (stdio.h是c语言输入输出的原型) 预处理指令: 宏定义:#define指令定义一个宏 ,#undef指令删除一个宏定义 文件包含 :#include指令指定一文件的内容包含到当前文件当中 条件编译:#if #ifdef,#ifndef,#elif,#else,endif 其他的一些特殊指令用的比较少:#error,#line,#pragma 宏:就是定义一个标识符替代"替换列表" 简单的宏 #define 标识符 替换列表 替换列表可以包括标识符,关键字,数值常量,字符常量, 字符串常量,操作符,排列 带参数的宏 (函数式宏) #define 标识符(x1,x2,x3....xn) 替换列表 注:在标识符和左括号之间灭有空格,如果有 预处理会认为是一个简单的宏 */ //宏de案例 //宏的参数没有类型,在待用的时候,编译器会检查参数类型是否正确,如果不是,要么转换为正确的类型 ,要么报错 //无法用一个指针来指向一个宏 //宏的替换列表当中有运算符,始终要将替换列表放在()中 //宏有参数,每次出现在替换列表中都要用() #define max(x,y) ((x) > (y) ? (x):(y)) #define is_even(n) ( (n)%2 == 0) int testmax = max(3,8); int testeven = is_even(3); printf("宏的测试1 : ---> max(3,8) == %d \nis_even(3) == %d \n",testmax,testeven); //#运算符的作用 #define print_int(n) printf(#n " = %d\n",n); print_int(8/3); //#运算符通知预处理器根据print_int的参数创建一个字符串,所以上面的调用会变为 //printf("8/3" " =%d\n",n) ; //取消宏的定义 #undef print_int //替换列表中使用 “逗号 ” 来包含一些列表达式 #define SHOW(s) (printf("曹雪坤 %s=====",(s)),test()) SHOW("好帅"); //使用{}来包含复合语句 #define shows() {printf("曹雪坤");printf("好帅啊!!!\n");} shows(); //c语言中的一些预定义宏 /* __LINE__ 被编译文件中的行号 __FILE__ 被编译文件的文件名 __DATE__ 编译的日期(mm dd yyyy) __TIME__ 编译的时间(hh:mm:ss) */ printf("\nc语言中的一些预定义:\n文件名:%s\n行号:%d\n时间:%s %s",__FILE__,__LINE__,__DATE__,__TIME__); //参数个数可变的宏 //__VA_ARGS__代表省略号对应de参数,是一个特定的标识符 #define testnum(one,...) printf("\n\n参数个数可变的宏:\n参数一:%s\n参数二:%s\n参数三:%s\n\n\n",one,__VA_ARGS__) testnum("aaa","bbbb","ccc"); /* 条件指令:如果常量表达式的值为1,那么预处理器会保留下面语句的代码 ,否则会删除语句对应的代码(如论如何#if和#endif都会删除) #if 常量表达式 语句... #endif */ #define cao 1 #if cao printf("常量表达式cao \n"); #endif #if 1 printf("测试#if 1\n"); #endif #if 0 printf("测试#if 0"); #endif //还有一种写法 #if defined(cao) printf("define cao 会判断cao时候定义,如果定义了返回1,没有定义返回0\n\n\n"); #endif #if defined(caos) printf("caos没有定义不会显示"); #else printf("caos没有定义,故显示这一行\n"); #endif #if defined(caos) printf("caos没有定义不会显示\n"); #elif cao printf("elif cao 定义了cao,所以显示这一行\n"); #else printf("因为定义了cao,所以没有执行到这一行\n") ; #endif /* 条件指令:#ifdef同#if 不过表示符只能使用常量,不能使用1或0 #ifdef 标识符 #endif #ifndef 标识符没有定义时显示 */ #ifndef caos printf("没有定义caos这个标识符,故显示这一行\n\n\n") ; #endif //其他指令 //#error指令// Error directive: 消息 //#error 用于生成错误...查看编译的时候输出的错误 #warning 用于生成警告...查看输出的警告 //把 line 的下一行定义为第 1 行,文件名为"a.c" #line 1 "a.c"}//end of main/*函数 */void test(){ printf("我是一个函数\n"); }//变长数组void testarr(int N){ printf("\n\n\n"); int arr[N]; int i; for(i = 0;i<=N-1;i++){ arr[i] = i; printf("数组的值 : %d \n",arr[i]); }}
阅读全文
0 0
- C语言笔记1
- C语言 笔记1
- C语言笔记1
- C语言笔记(1)
- C语言笔记---(1)
- C语言笔记1
- c语言笔记1
- C语言笔记1
- c语言笔记-1
- C语言学习笔记(1)
- C语言学习笔记1
- c语言学习笔记1
- C语言盲点笔记1
- C语言基础笔记1
- C语言笔记(1)
- C语言学习笔记1
- C语言学习笔记1
- C语言学习笔记1
- jsp第五周学习内容(3)
- JavaScript笔记(前端路由入门)
- cash和buffer的区别
- bzoj1699 [Usaco2007 Jan]Balanced Lineup排队
- 基础练习 BASIC-22 FJ的字符串
- c语言笔记-1
- Ubuntu使用shadowsocks,关闭后不能联网,或者是浏览器可以上网,但是网易云等用不了的情况!
- oop
- bzoj1617 [Usaco2008 Mar]River Crossing渡河问题
- Linux系统基础(二)
- bzoj1572 [Usaco2009 Open]工作安排Job
- OGNL表达式
- Android 源码设计模式解析与实战 第2版 读书笔记1.4.依赖倒置原则
- windows安装zip格式的mysql数据库