onemoo

char s{10] = "abcd";"abcd" 这样的字符串字面量其实就是字符数组,并且会带有结尾的 '\0' 字符,就是说它实际上相当于是 {'a', 'b', 'c', 'd', '\0'} 数组。而且字符串字面量可以用来初始化字符数组,这样字符数组元素就依次得到这字符串字面量中的字符。字符数组比初始化字符串更大的话,多出来没有得到初值的字符元素的值就是 '\0'。所以 s 数组在初始化之后其中的字符就是 {'a', 'b', 'c', 'd', '\0', '\0', ... 后面都是 '\0'}printf 的 %s 对应字符串,C 语言的字符串就是以 '\0' 结尾的字符数组,所以后面对应传入了 s。如果你还记得数组实参的隐式转型的话,这里传入的其实是“指向 s 首元素的指针”,而 printf 就从这个指针所指的字符开始打印,直到 '\0' 为止。那么 printf("%s\n",s); 这个语句,既然 s 是指首元素的指针,所以 printf 就从 s 数组的第一个 'a' 开始打印。虽然 s 数组一共有 10 个元素,但是第 5 个元素就是 '\0',这就视为字符串结尾,所以会打印出 abcd。至于你说的 printf("%s\n",s + i);这个 i 肯定是个整型数,s + i 是指针和整型的加法,这相当于得到指向 s 指针向后跳 i 位的指针。那么实际传入 printf 的指针就是从 s 数组开头向后跳 i 位的指针,printf 就会从所指的那个字符开始打印。所以“printf("%s\n",s+i);而不是这个printf("%s\n",s);是这两种写法都行吗?”如果 i 是整型,那这两种写法都是合法的。如果 i 也不会跳出数组 s 的范围,那么第二种写法也是合理的,运行没有问题。当然两种写法打印出的结果就可能不同了。只有 printf("%s\n", s + 0) 的结果才会和 printf("%s\n", s) 一样。

c语言char s[] 语句,35、若有定义和语句: char s[10]=abcd;printf(%s\n,s); 则结果是(以下u代表空格)...相关推荐

  1. c语言关键字不做标识符,C语言标识符、关键字、注释、表达式和语句

    这一节主要讲解C语言中的几个基本概念. 标识符 定义变量时,我们使用了诸如 a.abc.mn123 这样的名字,它们都是标识符(Identifier). 标识符就是程序员自己起的名字,除了变量名,后面 ...

  2. c语言 switch案例,C语言程序设计 2. switch语句的运用 案例 switch条件语句.docx

    C语言程序设计补充案例 C语言程序设计 案例 switch条件语句 一.案例描述 考核知识点 名称:switch条件语句 练习目标 了解switch语句的执行流程 掌握switch语句的使用方法及使用 ...

  3. C语言基础之5:运算符、表达式和语句

    Tips1: 关键字:while.typedef 运算符:=.-.*./.%.++.--.(类型名) C语言的各种运算符,包括用于普通数学运算的运算符 运算符优先级以及语句.表达式的含义 while循 ...

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

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

  5. C语言中阶第一篇:分支和循环语句透析,包含getchar和scanf的详细介绍(本篇循环只到while)

    业精于勤荒于嬉,行成于思毁于随. 在笔者初阶的文章里,已经介绍过分支和循环语句,不过由于是初阶,所以并不细致,今天我们正式打开了中阶的大门,开始一步一步的深入C语言的学习. C语言是结构化的程序设计语 ...

  6. R语言嵌套的ifelse语距:将一条If语句放在另一条If语句中,该语句作为嵌套的If else调用。If else语句允许我们根据表达式结果(TRUE或FALSE)打印不同的语句,执行不同的语句块

    R语言嵌套的ifelse语句:将一条If语句放在另一条If语句中,该语句作为嵌套的If else调用.If else语句允许我们根据表达式结果(TRUE或FALSE)打印不同的语句,执行不同的语句块 ...

  7. R语言switch语句语法、实战:Switch语句用来处理嵌套的if else处理起来比较困难或者麻烦的条件判断问题

    R语言switch语句语法.实战:Switch语句用来处理嵌套的if else处理起来比较困难或者麻烦的条件判断问题 目录

  8. python语言if语句-Python中的if判断语句入门

    前言 学习一门语言最好的办法,就是教懂别人.在这里,我会从 Python 最基础的教程写起,慢慢一步步进阶.Python 基础比较好的欢迎在本博客的文章里看看爬虫实战项目,欢迎指教. 人在选择时会做出 ...

  9. Database之SQLSever:T-SQL数据语言操作(数据定义语句DDL、数据操作语句DML、数据控制语句DCL、其他基本语句、流程控制语句、批处理语句)概念及其相关案例之详细攻略

    Database之SQLSever:T-SQL数据语言操作(数据定义语句DDL.数据操作语句DML.数据控制语句DCL.其他基本语句.流程控制语句.批处理语句)概念及其相关案例之详细攻略 目录 T-S ...

最新文章

  1. 深入理解Spring系列之六:bean初始化
  2. mysql 多配置文件实例安装_mysql安装之多实例多配置文件安装
  3. VTK:PolyData之DataSetSurfaceFilter
  4. idea如何彻底删除一个项目
  5. TIMING_04 时序约束的一般步骤
  6. SQL Server Update 所有表的某一列(列名相同,类型相同)数值
  7. linux bash命令_Ultimate Linux命令行指南-Full Bash教程
  8. Cannot merge new index 66395 into a non-jumbo instruction!,uses or overrides a deprecated API.
  9. 自己动手系列——实现一个简单的ArrayList
  10. cannot open shared object file: No such file or directory
  11. Nginx+php+mysql+wordpress搭建自己的博客站点
  12. 零基础学习.NET平台和Csharp编程开发
  13. SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
  14. [项目分享]JSP+Servlet+JDBC+DBCP2实现在线购书系统
  15. Excel如何计算两列数据的乘积之和(相乘之后相加)
  16. Python 矩形积分法计算f_x=x函数的值(完美实现)
  17. 路普达-区块链技术的本质与未来应用趋势
  18. C++中的dynamic_cast和dynamic_pointer_cast
  19. #include< >和#include“ ”的区别
  20. android和Mac共享文件,这可能是 Mac 共享文件最详细的教程了

热门文章

  1. win10分辨率不能调整_笔记本电脑如何连接投影仪?MAC OS/Win10/7笔记本和投影仪连接方法...
  2. 将vector中的元素使用sort排序
  3. 【寒江雪】判断一个点是否在网格内
  4. JSON转String
  5. OTA 简介和常见源码目录-1
  6. 网络图像的文本识别(阿里天池竞赛)
  7. java组成_java是由什么组成的?
  8. 区块链项目ICO评估模型
  9. 整数规划---0-1型整数规划
  10. 清默网络——我的CCIE考试经验与心得(2)