------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语言小节------字符串与指针相关推荐

  1. 黑马程序员C语言基础(第五天)运算符与表达式、程序流程结构、数组和字符串、函数

    https://www.bilibili.com/video/BV15W411K7k6?p=93&spm_id_from=pageDriver 黑马程序员C语言基础(第五天)运算符与表达式.程 ...

  2. 黑马程序员——c语言学习心得——函数传递二维数组

    黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.    变量 ...

  3. 黑马程序员C语言基础(第八天)复合类型(自定义类型)(结构体)、共用体(联合体)、枚举enum、 typedef

    黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...

  4. 黑马程序员C语言基础(第七天)内存管理

    黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...

  5. 黑马程序员C语言基础(第三天)

    黑马程序员C语言基础(一)第三天 https://www.bilibili.com/video/BV15W411K7k6?p=40 文章目录 低级语言与高级语言 c语言优缺点 c语言应用领域 通过gc ...

  6. 黑马程序员——C语言基础---基础语法

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  7. 黑马程序员C语言基础(第六天)指针

    https://www.bilibili.com/video/BV1jW411K7v2/?p=70&spm_id_from=pageDriver 文章目录 指针 概述 内存 物理存储器和存储地 ...

  8. 黑马程序员--C语言基础之--scanf函数

    ------IOS培训期待与您交流! ------- 写代码的时候,我们可以看得出,几乎每一个C程序都会包括输入输出.输入输出是程序中最基本的操作之一. C语言本身并不提供输入输出的语句,输入输出操作 ...

  9. 黑马程序员--C语言基础之--变量、内部函数与外部函数

    ------IOS培训期待与您交流! ------- 一.变量 变量代表着一个有名字的.具有特定属性的一个存储单元,运行期间,变量的值是可以改变的.变量必须先定义,后使用.定义时,指定该变量的名字与类 ...

最新文章

  1. 深度学习计算机视觉常见的29道面试题及解析
  2. Web纯前端“旭日图”实现元素周期表
  3. iOS开发图片纯色填充(两种方式)和缩小图片
  4. UA MATH567 高维统计 专题0 为什么需要高维统计理论?——以线性判别分析为例
  5. 用Siamese和Dual BERT来做多源文本分类
  6. 随笔小杂记(一)——更改整个文件夹内的命名
  7. Atitit 远程存储与协议 mtp ptp rndis midi nfs smb webdav ftp Atitit mtp ptp rndis midi协议的不同区别 1. PTP: 图
  8. Github爆款!Aura v2.0.0正式版来了…
  9. 计算机bios更改usb端口,联想电脑bios怎么设置usb接口
  10. 首次使用计算机鼠标键盘不能用,电脑鼠标键盘都不能用如何解决 开机后鼠标键盘不能用怎么办...
  11. GEE计算Landsat系列影像植被覆盖度
  12. 《设计模式》之策略模式
  13. php 多核cpu,如何利用多核CPU来加速你的Linux命令
  14. Java面试:数据库,Java,框架,前端技术。应有尽有
  15. 单片机 数字电压表(TLC2543)
  16. Laravel框架中上传图片
  17. [比赛|考试] 咕咕掉的一些比赛总结
  18. Data Science Bowl 2017数据预处理
  19. 移动互联网如何改变了外卖行业
  20. Python——递归:这帮小兔崽子、汉诺塔

热门文章

  1. 2020-02-06 asm内联汇编
  2. 2018-09-29 摘抄eDP取代LVDS视频接口
  3. OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法
  4. 用户提需求要把自己文集内的全部文章一键全部转换为私密。我该不该听他的?...
  5. In App Purchases 入门
  6. flash实用工具类+开源包收藏
  7. 区块链会计案例_区块链在会计领域的应用分析与研究
  8. bootstrap的表单验证 vue_分享几个基于Vue的UI库和开源项目
  9. js打印服务器文件,用Electron / Node.js编写的打印服务器
  10. Android:沉浸式状态栏(一)工具类