跟我学C语言(第六天)
来源:互联网 发布:制皮分解抑魔金数据 编辑:程序博客网 时间:2024/04/28 03:12
第六天
字符串操作函数:strcat strcpy strcmp strlen
字符串大小比较:和相同位置的字符ASCII值相关,和字符串长度毫无关系.
假设有两个字符串s1 s2
hello123 < hewlo
两个字符串完全一样才会相等
例子:循环从终端读取一些字符串,从这些字符串中找出最大的,以及最小的。
指针:
1、地址是内存提供的
内存提供的地址是以数字的形式来体现的。这里的数字如果单纯站在内存角度思考没有所谓的类型
每个地址表示内存多大空间?一个字节
2、什么是地址? 本质上就是内存上的编号
3、什么是指针?
平时你们看到的所谓的"指针"是一个通称。这个通称被分成两个部分:指针常量、指针变量
什么是指针常量?就是内存地址编号。
什么是指针变量?存放内存地址编号的变量。(存放指针变量的变量)
c语言中变量定义的方式:
数据类型 变量名;
常用的描述语句:a指向了b,a存放了b对应空间首地址(a一定是指针变量)。
int *p = &a;
*p = 100;
如何区分上面两个*
1、在变量的定义语句中*是用来描述类型的作用。
2、在变量的直接赋值中出现*,操作指针指向空间的作用。
double x;
int *p;
p = (int *)&x; 如果赋值语句涉及到强转操作,那么*代表一个指针类型。
p是int *类型
*p = 10;
&和*运算符互逆
二级指针:
int a = 10;
int *p = &a;
int **q = &p;
二级指针变量存放的是一级指针变量的地址。
一定要区分开一个概念:
1、指针变量p的地址是2000,如何获得2000地址? 使用&p
2、指针变量p存放的地址是2000,如何获取2000? 使用p
注意一个很重要的问题:
int *p; //这个指针变量p有指向,但是不知道指向哪里,我们叫做野指针。
这种指针的使用可能不出问题,也可能出问题。随意绝对不能使用。
*p = 100;
指针变量中的运算符:
算数运算符:+ - ++ --
int a;
int *p = &a;
p + 1;跳过了a的空间
一个指针变量+ - 操作跳过几个字节和指针变量指向的空间类型相关
关系运算符:
int *p = &a;
int *q = &b;
数组名:是整个数组空间首地址,数组名是地址常量。
int a[5];
int *p = a;
如何打印某个数组元素:printf("%d\n",a[3]);
printf("%d\n",*(a + 3));
a[i] <==> *(a + i);
因为p存放了a,所以 p + i <==> a + i ==> *(p + i) <==> *(a + i) <==> a[i];
最后一个:c语言规定数组有下标法,指针变量也有下标法, *(p + i) <==> p[i];
学习过程中:前提 int *p = a;
a[i] 永远相等 *(a + i)
*(p + i) 永远相等 p[i]
上下两部分是否相等要看指针和数组名的关系
例子:
1、假设一个数组 int a[5] = {1,2,3,4,5};逆序。
我的要求是,int *p = a;后续操作使用p,不能使用a。
2、假设有一个整型数组:int a[5];
已知一个字符串 char *s = "hello world";
将字符串存放到数组a中。
3、假设有n个人,每个人从1开始查数——1,2,3,查到3的人退出;从第四个人开始1,2,3插数,查到3的人退出
最终只剩一个,打印出剩下的是第几个人。
阅读全文
0 0
- 跟我学C语言(第六天)
- 跟我一起学C语言(第二天)
- 跟我学C语言(第四天)
- 跟我学C语言(第三天)
- 跟我一起学C语言(第五天)
- 跟我一起学C语言(第七天)
- 跟我学C语言(第八天)
- 跟我一起学C语言(第九天)
- 跟我一起学C语言
- 《跟我一起学C++》
- 跟我来学C(一)类型
- 跟siki老师学C#第六天
- 跟我一起学C++(第一季)
- 《跟我学C语言》已经出版,欢迎大家多提宝贵意见
- 我学c语言啦
- 跟我一起学C++课程笔记(第二天)
- 跟我一起学linux基础(第二天)
- 跟我一学linux基础(第四天)
- [git]查看文件删除记录
- 博客人生开始
- hdu 3068 最长回文
- A
- SQL 语法记录
- 跟我学C语言(第六天)
- SHU-A序列(两次最长上升子序列)
- struts2源码研究之设计模式准备
- 免费MD5解密网站,轻松破解md5密码,mysql5/mysql323,ntlm,salt密码
- java(5)数组
- 日志级别的选择:Debug、Info、Warn、Error还是Fatal
- HDU 5898 odd-even number——数位dp
- windows服务器java项目cpu占用较高原因分析
- spring技术内幕笔记:IoC容器初始化过程(2)- BeanDefinition的载入