目录

课程安排

1、常量

2、标识符

3、数据类型

1、基本类型

2、指针类型

3、构造类型

4、空类型

4、取值范围

5、字符和字符串

6、算数运算符

7、关系运算符和逻辑运算符

8、if语句

9、switch语句

指针和指针变量


课程安排

第一季:C语言语法

第二季:C语言在linux下的应用

第三季:利用Arduino进行开发

1、常量

定义符号常量

 #define BOSS "小甲鱼"

将程序中所有的BOSS替换成小甲鱼

字符串常量,在输出的时候会自动追加一个\0表示编译结束,所以字符串长度一般比输入的多一位

2、标识符

标识符只能是英文字母(A-Z,a-z)和数字(0-9)或者下划线组成

第一个字符必须是字母或者下划线开头

标识符区分大小写

不能使用关键字来命名标识符

3、数据类型

1、基本类型

整数类型

 short intint long intlong long int

长度依次递减

浮点数类型

 floatdoublelong double

字符类型

 char

布尔类型

 _Bool

枚举类型

 enum

sizeof 运算符用于获得数据类型或表达式的长度

 sizeof(object);//对象sizeof(type-name);//类型sizeof object;//对象

signed可以存放负数

unsigned不可以存放负数

2、指针类型

3、构造类型

数组类型

结构类型

联合类型

4、空类型

4、取值范围

符号位:存放signed类型的存储单元中,左边第一位表示符号位。如果该位为0,表示该整数为正数,如果该位为1,表示该整数是一个负数

无符号的不能用%d 需要用%u

char最大值127位

最小值-128位

5、字符和字符串

 #include<stdio.h>int main(){char a='c';printf("%c=%d\n",a,a);//ASCLL表return 0;}

输出结果为a=67

 #include<stdio.h>int main(){char a=70,b=105,c=115,d=104,e=67;printf("%c%c%c%c\n",a,b,c,d,e);return 0;}

输出结果为fishc

 include<stdio.h>int main(){unsigned char height;//用unsigned进行限制,确保取值范围是                           0-255height=170;printf("小甲鱼的身高是%d厘米",height);return 0;}

定义字符串:

 #include<stdio.h>int main(){​char name[5]={'F','i','s','h','c'};printf("%s\n",name);printf("Hello\n");return 0;}  

这样输出的结果是乱码,原因是计算机不知道如何停下,为了确定字符在内存里的结束位置,C语言规定在结尾加一个\0 该代码块没有\0的位置,因此可以修改如下

 #include<stdio.h>int main(){​char name[6]={'F','i','s','h','c','\0'};printf("%s\n",name);printf("Hello\n");return 0;}  

就是再加一个\0的位置

或者不用中括号里面的数字也可以

 #include<stdio.h>int main(){​char name[]={'F','i','s','h','c','\0'};printf("%s\n",name);printf("Hello\n");return 0;}  

或者在大括号里定义字符串常量,用双引号进行定义

 #include<stdio.h>int main(){​char name[]={"FISHC"};printf("%s\n",a);printf("Hello\n");return 0;}  

6、算数运算符

 #include<stdio.h>#include<math.h>int main(){inti,j,k;i=1+2;j=1+2*3;k=i+j+-1+pow(2,3);printf("i=%d\n",i);printf("j=%d\n",j);printf("k=%d\n",k);return 0;}

7、关系运算符和逻辑运算符

==(等于)

!=(不等于)

 #include<stdio.h>int main(){int a=5,b=3;printf("%d\n",1<2);printf("%d\n",a>b);printf("%d\n",a<=b+1);printf("%d\n",'a'+'b'<='c');printf("%d\n",(a=3)>(b=5));return 0;}

输出结果: 1 1 0 0 0

!逻辑非

&&逻辑与

||逻辑或

逻辑表达式中,任何非零的数表示真,0表示假

短路求值:又称最小化求职,是一种逻辑运算符的求值策略,只有当第一个运算数的值无法确定逻辑运算的结果时,才对第二个运算数进行求值

C语言对逻辑与和逻辑或采用短路求值的方法

 #include<stdio.h>int main(){int a=3,b=3;(a=0)&&(b=5);printf("a=%d,b=%d\n",a,b);(a=1)||(b=5);printf("a=%d,b=%d\n",a,b);return 0;}

输出结果为 a=0,b=3

a=1,b=3

两个结果都是一旦判断a为真或者假之后 就可以不用管b的赋值情况了,所以b的值仍然是原来的3

8、if语句

 #include<stdio.h>int main(){int i;printf("您老贵庚啊:");scanf("%d",&i);if(i>=18){printf("进门左拐!\n");}else{printf("慢走,不送!\n");}return 0;}
 #include<stdio.h>int main(){int i;printf("请输入分数:");scanf("%d",&i);if(i>=90){printf("A\n");}else if(i>=80&&i<90){printf("B\n");}else if(i>=70&&i<80){printf("C\n");}else if(i>=60&&i<70){printf("D\n");}else{printf("E\n");}return 0;}

9、switch语句

 #include<stdio.h>int main(){char ch;printf("请输入你的成绩:");scanf("%c",&ch);switch (ch){case'A' :printf("你的成绩在90分以上!\n");break;case'B':printf("你的成绩在80~90分之间!\n");break;case'C':printf("你的成绩在70~80分之间!\n");break;case'D':printf("你的成绩在60~70分之间!\n");break;case'E':printf("你的成绩在60分以下!\n");break;default:printf("请输入有效的成绩");break;}return 0;}

else 悬挂

 #include<stdio.h>int main(){char israin,isfree;printf("是否有空?(Y/N)");scanf("%c",&isfree);getchar()//可以过滤回车printf("是否下雨?(Y/N)");scanf("%c",&israin);if(isfree=='Y'){if(israin=='Y')printf("记得带伞噢\n");}else{printf("女神没空\n");}return 0;}

等于号问题

 #include<stdio.h>int main(){char hasBF;printf("小花你有男朋友吗?(Y/N)");scanf("%c",&hasBF);if(hasBF=='Y')//这里如果是一个=,就会导致无法出现第二种情况{printf("那祝你们幸福咯!\n");}else{printf("那我们在一起吧!\n");}return 0;}

13 while语句和dowhile语句

循环结构

whlie(表达式)

循环体

 #include<stdio.h>int main(){int i=1,sum=0;while(i<=100){sum=sum+i;i=i+1;}printf("输出的结果是:%d",sum);}

输出结果是5050

指针和指针变量

类型名*指针变量名

char*pa;//定义一个指向字符型的指针变量

int *pb;//定义一个指向整型的指针变量

取地址运算符和取值运算符

如果需要获取某个变量的地址,可以使用取地址运算符(&)

char*pa=&a;

int *pb=&f;

如果需要访问指针变量指向的数据,可以使用取值运算符(*)

printf("%c,%d\n",pa,pb);

 #include<stdio.h>int main(){char a='F';int f=123;char*pa=&a;char*pb=&f;printf("a=%c\n",*pa);printf("f=%d\n",*pb);return 0;}

避免访问未初始化的指针

例如

 #include<stdio.h>int main(){int*a;a=123;return 0;}

指针和数组

 #include<stdio.h>int main(){int a;int *p=&a;printf("请输入一个整数:");scanf("%d",&a);printf("a=%d\n",a);printf("请重新输入一个整数:");scanf("%d",p);printf("a=%d\n",a);return 0;}

指向数组的指针

如果用一个指针指向数组,应该怎么做呢

char*p;

p=a;//语句1

p=&a[0];//语句2

 #include<stdio.h>int main(){char a[]="FishC";int b[5]={1,2,3,4,5};float c[5]={1.1,2.2,3.3,4.4,5.5};double d[5]={1.1,2.2,3.3,4.4,5.5};int*p=b;printf("*p=%d,*(p+1)=%d,*(p+2)=%d\n",*p,*(p+1),*(p+2));return 0;}

指针的运算

当指针指向数组元素的时候,我们可以对指针变量进行加减运算,这样做的意义相当于指向指针所在位置向前或向后的第n个元素

对比标准的下标法访问数组元素,这种使用指针进行间接访问是的方法叫做指针法

p+1不是简单的江地址+1,而是指向数组的下一个元素

 #include<stdio.h>int main(){char str[128];printf("请输入鱼C的域名:");scanf("%s",str);printf("鱼C工作室的域名是:%s\n",str);return 0;}

由上述代码可知,数组名就是一个地址信息

数组名其实是数组第一个元素的地址

 #include<stdio.h>int main(){char str[128];printf("请输入鱼C的域名:");scanf("%s",str);printf("str的地址是:%p\n",str);printf("str的地址是:%p\n",&str[0]);//printf("鱼C工作室的域名是:%s\n",str);return 0;}

结果如下

str的地址是:00000030b89ff970 str的地址是:00000030b89ff970

 #include<stdio.h>int main(){char a[]="FishC";int b[5]={1,2,3,4,5};float c[5]={1.1,2.2,3.3,4.4,5.5};double d[5]={1.1,2.2,3.3,4.4,5.5};printf("a[0]->%p,a[1]->%p,a[2]->%p\n",&a[0],&a[1],&a[2]);printf("b[0]->%p,b[1]->%p,b[2]->%p\n",&b[0],&b[1],&b[2]);printf("c[0]->%p,c[1]->%p,c[2]->%p\n",&c[0],&c[1],&c[2]);printf("d[0]->%p,d[1]->%p,d[2]->%p\n",&d[0],&d[1],&d[2]);return 0;}

结果如下

a[0]->0000009a5e5ff7da,a[1]->0000009a5e5ff7db,a[2]->0000009a5e5ff7dc b[0]->0000009a5e5ff7e0,b[1]->0000009a5e5ff7e4,b[2]->0000009a5e5ff7e8 c[0]->0000009a5e5ff800,c[1]->0000009a5e5ff804,c[2]->0000009a5e5ff808 d[0]->0000009a5e5ff820,d[1]->0000009a5e5ff828,d[2]->0000009a5e5ff830



小甲鱼C语言1-22讲笔记(指针和数组)相关推荐

  1. 【小甲鱼C语言】课后笔记第一章第三节——常量和宏定义

    目录 1.常见的常量 2.宏定义(符号常量) 3.标识符 4.字符串常量 5.课后习题(编程题) 1.常见的常量 整型常量:520, 1314, 123 实型常量:3.14, 5.12, 8.97 字 ...

  2. 小甲鱼python视频第八讲(课后习题)

    1.for循环的使用,注意下面代码的区别 for i in range(0,10,2):print("i love you") for i in range(0,10):print ...

  3. 小甲鱼python课后答案40讲_小甲鱼Python第二十一讲课后习题

    测试题: 0. 递归在编程上的形式是如何表现的呢? 在编程上,递归表现为函数调用本身这么一个行为. 1. 递归必须满足哪两个基本条件? 一. 函数调用自身 二. 设置了正确的返回条件 2. 思考一下, ...

  4. vba数组如何精确筛选_第22讲:利用动态数组去除重复值的方法

    大家好,我们今日继续讲解VBA数组与字典解决方案第22讲:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法.如果文本中含有大量的重复值,此时,如果我们要剔除重复值,该怎么办?用VBA的方法 ...

  5. C语言学习笔记---指针和数组

    数组是相同类型的数据集合,会在内存中占用连续的一块内存.而指针是存储的一个地址,在内存中不会占用连续的内存. 先来写一段测试代码 void fun(void) {int i;int num[10]={ ...

  6. C语言二分查找法(指针和数组实现)

    /** 编写一个函数,对一个已排序的整数表执行二分查找.* 函数的输入包括各异指向表头的指针,表中的元素个数,以及待查找的数值.* 函数的输出时一个指向满足查找要求的元素的指针,当未查找到要求的数值时 ...

  7. C程序设计语言现代方法12:指针和数组

    目录 1. 指针的算术运算 1.1 概述 1.2 C语言支持的算术运算类型 2. 指针的比较 3. 指针用于数组处理 4. 数组名与指针 4.1 用数组名作指针 4.2 数组取下标操作 4.3 惯用法 ...

  8. 【小甲鱼C语言】课后笔记第一章第一节——打印(printf)

    目录 1."打印"就是"输出"的意思 2.使用 GCC 编译程序:gcc 源代码 -o 可执行文件. 3.printf 是格式化输出函数 a.函数概要 b.函数 ...

  9. 【小甲鱼C语言】课后笔记第一章第九节——if语句

    目录 1. 分支结构的作用就是将 C 语言的代码引入歧途 2.switch语句和分支嵌套 1. switch 语句 2. 使用 break 语句跳出 3. 分支结构的嵌套 2. 使用 break 语句 ...

  10. 【小甲鱼C语言】课后笔记第一章第七节——算数运算符

    目录 1. 算术运算符 2. 何谓"目"? 3. 表达式 4. 类型转换 5.课后习题(编程题) 1. 算术运算符 C 语言通过提供大量的运算符来支持我们对数据进行处理,前边我们将 ...

最新文章

  1. platform_driver_register适配的两种方式及probe是否启动与硬件关系
  2. Java客户端访问HBase集群解决方案(优化)
  3. php设置key,phpstorm8 设置及license key
  4. Hibernate-级联操作
  5. wordpress插件制作
  6. Vivado2015.4使用教程(一个完成工程的建立)
  7. 详解Nagios配置文件的逻辑关系
  8. python设置随机数种子为12_Python标准库12 数学与随机数 (math包,random包)(转载)...
  9. 禅道批量添加任务时选择对应模块功能
  10. vue aplayer 进度条无法拖动_用Vue做个Window玩
  11. 红旗Linux9不让登录wechat,关于网页版微信无法登陆以及wechat全平台使用的问题
  12. 【大学生软件测试基础】飞机票预定系统 - 因果图 - 测试用例
  13. R语言自动提取新闻摘要的简单实现
  14. HP DeskJet 2131 喷墨一体打印机打印设置教程
  15. 删除用户 userdel
  16. autojs ui界面模板3
  17. scratch3.0键盘无法输入文字或修改指令中的数字的快速解决办法
  18. sublime搭建基于GoSublime+gocode+MarGo的下载SublimeGO开发环境
  19. 推荐一个好用的在线pdf压缩工具
  20. 单片机之时钟工作原理

热门文章

  1. android 测试js,Android 全自动js脚本测试 Appium教程——appium环境搭建(一)
  2. 2016链家大数据楼市半年报
  3. oppo 手机刷机和root,还有其他必备的刷机工具,需要请进!!!
  4. vscode下载安装及中文配置
  5. php_字符串按汉字拆分,php分割中文字符串
  6. 复杂系统学习(五):细胞自动机 I:1D 和 2D CAs
  7. MPLAB IDE V8.92 ICD2 Win10 64位下驱动安装及设置,连接不上的解决方法
  8. hd620显卡驱动 linux,英特尔为Windows 10 推出新显卡驱动 26.20.100.7870
  9. 小猿圈web分享-一个web全栈工程师的面试总结
  10. python-回文字符串