黑马程序员——C语言小节------字符串与指针
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、字符串的初始化,字符串必须以"\0"结尾,"\0"的ASCII码值为0,例如:
char name[] = "jack"; // "jack" == 'j'+'a'+'c'+'k'+'\0'// 都是字符串 char name[8] = "it"; char name2[8] = {'i', 't', '\0'}; char name3[8] = {'i', 't', 0}; char name4[8] = {'i', 't'};// 不算是一个字符串(只能说是一个字符数组) char name5[] = {'i', 't'};
2、'\0'的作用
1.字符串结束的标记
2.printf("%s", name2);
会从name2这个地址开始输出字符,直到遇到\0为止。
3、strlen函数:计算字符串长度
1.计算的是字符数,并不是字数。一个汉字算作3个字符
2.计算的字符不包括\0
3.从某个地址开始数字符的个数,直到遇到\0为止
4、指针变量的定义
格式:变量类型 *变量名;
int *p定义了一个指向整型变量的指针变量p
指针变量只能存储地址
指针就一个作用:能够根据一个地址值,访问对应的存储空间
指针变量p前面的int:指针变量p只能指向int类型的数据
任何指针都占用8个字节的存储空间
5、指针变量的使用注意
指针变量只能存储地址(地址一般以十六进制的形式表示)
指针变量未经过初始化,不要拿来间接访问其他存储空间
定义变量时的*仅仅是一个象征,没有其他特殊含义
*p = 20,这个时候的*的作用:访问指向变量p指向的存储空间
6、指向指针的指针
int a = 10;int *p = &a;int **pp = &p;// (*pp) == p// *(*pp) == *p == a// **pp == *p == a
7、清空指针——P = NULL;
8、输出格式总结
%d int
%f float\double
%ld long
%lld long long
%c char
%s 字符串
%zd unsigned long
9、数组与指针
1.数组元素的访问方式
1> 数组名[下标] ages[i]
2> 指针变量名[下标] p[i]
3> *(p + i)
2.指针变量+1,地址值究竟加多少,取决于指针的类型
int * +4
char * +1
double * +8
3.利用一个指针来接收一个数组,指针变量p指向了数组的首元素,数组名就是数组的地址,也是数组首元素的地址
例如:
int array[5] = {10, 9, 8, 67, 56}; int *p; p = ages; // p = &ages[0]
掌握:
定义字符串的2种方式
1> 利用数组
char name[] = "itcast";
* 特点:字符串里面的字符是可以修改的
* 使用场合:字符串的内容需要经常修改
2> 利用指针
char *name = "itcast";
* 特点:字符串其实是一个常量字符串,里面的字符是不能修改
* 使用场合:字符串的内容不需要修改,而且这个字符串经常使用
总结:
一、指针变量的定义
1. 格式:变量类型 *指针变量名;
2. 举例:int *p; char *p2;
3. 注意:定义变量时的*仅仅是指针变量的象征
二、利用指针变量简单修改其他变量的值
1.指向某个变量
int a;int *p;p = &a;
或者
int a; int *p = &a;
2.修改所指向变量的值
*p = 10;
3.在函数内部修改外面变量的值
int a = 10; change(&a); void change(int *n) {*n = 20; }
三、指针与数组
1.将数组当做函数参数传入时,会自动转为指针
四、指针与字符串
1.定义字符串的2种方式
1> 利用数组
char name[] = "itcast";
* 特点:字符串里面的字符是可以修改的
* 使用场合:字符串的内容需要经常修改
2> 利用指针
char *name = "itcast";
* 特点:字符串其实是一个常量字符串,里面的字符是不能修改
* 使用场合:字符串的内容不需要修改,而且这个字符串经常使用
2.定义字符串数组
1> 利用二维字符数组
char names[2][10] = {"jack", "rose"};
2> 利用指针数组
char *names[2] = {"jack", "rose"};
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
转载于:https://www.cnblogs.com/zhangxiaoshan/p/4530404.html
黑马程序员——C语言小节------字符串与指针相关推荐
- 黑马程序员C语言基础(第五天)运算符与表达式、程序流程结构、数组和字符串、函数
https://www.bilibili.com/video/BV15W411K7k6?p=93&spm_id_from=pageDriver 黑马程序员C语言基础(第五天)运算符与表达式.程 ...
- 黑马程序员——c语言学习心得——函数传递二维数组
黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化. 变量 ...
- 黑马程序员C语言基础(第八天)复合类型(自定义类型)(结构体)、共用体(联合体)、枚举enum、 typedef
黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...
- 黑马程序员C语言基础(第七天)内存管理
黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...
- 黑马程序员C语言基础(第三天)
黑马程序员C语言基础(一)第三天 https://www.bilibili.com/video/BV15W411K7k6?p=40 文章目录 低级语言与高级语言 c语言优缺点 c语言应用领域 通过gc ...
- 黑马程序员——C语言基础---基础语法
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
- 黑马程序员C语言基础(第六天)指针
https://www.bilibili.com/video/BV1jW411K7v2/?p=70&spm_id_from=pageDriver 文章目录 指针 概述 内存 物理存储器和存储地 ...
- 黑马程序员--C语言基础之--scanf函数
------IOS培训期待与您交流! ------- 写代码的时候,我们可以看得出,几乎每一个C程序都会包括输入输出.输入输出是程序中最基本的操作之一. C语言本身并不提供输入输出的语句,输入输出操作 ...
- 黑马程序员--C语言基础之--变量、内部函数与外部函数
------IOS培训期待与您交流! ------- 一.变量 变量代表着一个有名字的.具有特定属性的一个存储单元,运行期间,变量的值是可以改变的.变量必须先定义,后使用.定义时,指定该变量的名字与类 ...
最新文章
- 深度学习计算机视觉常见的29道面试题及解析
- Web纯前端“旭日图”实现元素周期表
- iOS开发图片纯色填充(两种方式)和缩小图片
- UA MATH567 高维统计 专题0 为什么需要高维统计理论?——以线性判别分析为例
- 用Siamese和Dual BERT来做多源文本分类
- 随笔小杂记(一)——更改整个文件夹内的命名
- Atitit 远程存储与协议 mtp ptp rndis midi nfs smb webdav ftp Atitit mtp ptp rndis midi协议的不同区别 1. PTP: 图
- Github爆款!Aura v2.0.0正式版来了…
- 计算机bios更改usb端口,联想电脑bios怎么设置usb接口
- 首次使用计算机鼠标键盘不能用,电脑鼠标键盘都不能用如何解决 开机后鼠标键盘不能用怎么办...
- GEE计算Landsat系列影像植被覆盖度
- 《设计模式》之策略模式
- php 多核cpu,如何利用多核CPU来加速你的Linux命令
- Java面试:数据库,Java,框架,前端技术。应有尽有
- 单片机 数字电压表(TLC2543)
- Laravel框架中上传图片
- [比赛|考试] 咕咕掉的一些比赛总结
- Data Science Bowl 2017数据预处理
- 移动互联网如何改变了外卖行业
- Python——递归:这帮小兔崽子、汉诺塔
热门文章
- 2020-02-06 asm内联汇编
- 2018-09-29 摘抄eDP取代LVDS视频接口
- OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法
- 用户提需求要把自己文集内的全部文章一键全部转换为私密。我该不该听他的?...
- In App Purchases 入门
- flash实用工具类+开源包收藏
- 区块链会计案例_区块链在会计领域的应用分析与研究
- bootstrap的表单验证 vue_分享几个基于Vue的UI库和开源项目
- js打印服务器文件,用Electron / Node.js编写的打印服务器
- Android:沉浸式状态栏(一)工具类