字符类型

  char(character)是一种整数,也是一种特殊的类型:字符。这是因为

  ① 用单引号表示的字符字符字面量:‘a’,'1'

  ②‘’也是一个字符

  ③printf和scanf里用%c来输入、输出字符。

 #include<stdio.h>
int main()
{
char c;
char d;
c = ;
d = '';
printf("c = %d,d = %d,d = %c\n",c,d,d);
return ;
}
//运行结果:c = 1,d = 49,d = '1'

  通过例子看到,字符'1'和整数1不相等。字符‘1’和整数49相等。字符也是整数的一种。

字符的输入输出

  如何输入‘1’这个字符给char c ?

  scanf("%c",&c); ---->1

  scanf("%d",&i);c=i; ---->49  

  ‘1’的ASCII编码是49,所以c == 49时,它代表'1'

 #include<stdio.h>
int main ()
{
char c;
int d;
scanf("%c",&c);
printf("c = %d,c = '%c'\n",c,c);
scanf("%d",&d);
printf("d = %d,d = '%c'\n",d,d);
return ;
}
//运行结果:输入 1
      输出 c=49,c='1'
输入 49
      输出 d = 49,d = '1'

  字符的输入看scanf的参数,%c就是输入的即是字符;%d就是整数,对应的字符。

混合输入

  int i;char c;

  scanf("%d %c",&i,&c);

  scanf("%d%c",&i,&c);

  有何不同?

 #include<stdio.h>
int main()
{
int i;
char c;
scanf("%d %c",&i,&c);//中间有空格
printf("i = %d,c = %d,c = '%c'\n",i,c,c);
scanf("%d%c",&i,&c);//中间无空格
printf("i = %d,c = %d,c = '%c'\n",i,c,c);
return ;
}
//运行结果:
      有空格,输入1a,1 a,1 a都可以正确读入整数和字符
      无空格,只能1a可以正确读入整数和字符。1 a,1 a读入整数1和空格字符。读不进字符a。

 字符计算  

 #include<stdio.h>
int main()
{
char c = 'A';
c++;
printf("%c",c);
return ;
}

  字符可以转化为整数运算,结构再转化为字符。

  字母在ASCII表中是顺序排列的;

  大写字母和小写字母是分开排列的,并不在一起。

  于是:

  ①‘a’-'A'可以得到两段之间的距离

  ②A+'a'-A可以把一个大写字母变成小写字母

  ③a+'A'-'a'可以把一个小写字母变成大写字母。


 逃逸字符

  用来表达无法印出来的控制字符或特殊字符,它由一个反斜杠"\"开头,后面跟上另一个字符,这两个字符合起来,组成了一个字符。

  如  printf("请分别输入身高的英尺和英寸,""如输入\"5 7\"表示5英尺7英寸:")

字符 意义 字符 意义 
\b 回退一格 \" 双引号
\t 到下一表格位 \' 单引号
\n 换行 \\ 反斜杠本身
\r 回车    

  不同的终端shell翻译可能有区别,通常\b是回退一格不删除,\t制表符,用于对齐;\n通常执行换行和回车两个动作。  

C语言学习笔记--指针与字符串的更多相关文章

  1. c语言学习笔记 - 指针和字符串

    前面学习了字符串是一种字符数组,又知道了指针变量和数组的关系,这里来看一下指针和字符串的关系. #include <stdio.h> int main(void){ char str = ...

  2. c语言学习笔记 - 指针和数组

    结合内存存储数据的机制,c语言里指针的出现和使用也就不奇怪了,如果先学了内存的一些知识,以及程序运行机制,到了c指针这块就会清晰很多. #include <stdio.h> int mai ...

  3. 吴裕雄--天生自然C++语言学习笔记:C++ 字符串

    C++ 提供了以下两种类型的字符串表示形式: C 风格字符串 C++ 引入的 string 类类型 C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持.字符串实际上是使用 null 字符 ...

  4. c语言学习笔记.指针.

    指针: 一个变量,其值为另一个变量的地址,即,内存位置的直接地址. 声明: int *ptr; /* 一个整型的指针,指针指向的类型是整型 */ double *ptr; /* 一个 double 型 ...

  5. C语言学习笔记--指针阅读技巧

    1. 指针阅读技巧:右左法则 (1)从最里层的圆括号中未定义的标示符看起 (2)首先往右看,再往左看 (3)遇到圆括号或方括号时可以确定部分类型,并调转方向 (4)重复 2.3 步骤,直到阅读结束 注 ...

  6. C语言学习笔记--指针和数组的关系

    1.数组的本质 (1)数组是一段连续的内存空间 (2)数组的空间大小:sizeof(array_type)*array_size; (3)数组名可看做指向数组第一个元素的常量指针 (4)数组声明时编译 ...

  7. C语言学习笔记--指针概念

    指针也是一种变量,占有内存空间,用来保存内存地址,在32位系统中指针的占用的内存大小为4个字节 1.*号的意义 (1)在指针声明时,*号表示所声明的变量为指针 (2)在指针使用时,*号表示取指针所指向 ...

  8. Go语言学习笔记九: 指针

    Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...

  9. GO语言学习笔记(一)

    GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...

随机推荐

  1. Linux网卡驱动架构分析

    一.网卡驱动架构 由上到下层次依次为:应用程序→系统调用接口→协议无关接口→网络协议栈→设备无关接口→设备驱动. 二.重要数据结构 1.Linux内核中每一个网卡由一个net_device结构来描述. ...

  2. AES - Rijndael 算法(一)

    1997年1月,美国标准技术协会NIST开始遴选数据加密标准(Data Encryption Standard,简称DES)替代者的工作,称为高级加密标准[1’2](Advanced Enerypti ...

  3. php开启错误提示

    1.在php.ini文件里加上下面两句 display_errors = Onerror_reporting = E_ALL | E_STRICT 2.在Apache的 httpd.conf文件里加上 ...

  4. Microsoft Dynamics CRM4.0编程---说明

    Introduction(说明) If your organization has customers, you need a software system to help you manage y ...

  5. [置顶] Ruby,Scala和JavaScript中的函数式编程(一)

    函数式编程(英语:Functional programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象.函数编程语言最重要的 ...

  6. android如何让service不被杀死

    1.在service中重写下面的方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动重写创建 @Override     public int onStartCom ...

  7. ifconfig命令详解

    linux下网上命名规律:eth0,eth1.第一块以太网卡,第二块.lo为环回接口,它的IP地址固定为127.0.0.1,掩码8位.它代表你的机器本身. 1.ifconfig是查看网卡的信息 eth ...

  8. HDU 3572 最大流

    [题意]有n个任务,每个任务必须开始于第Si天之后(包括Si),结束于第Ei天之前(包括Ei),每个任务持续的时间为Pi,现在有m台机器,每台每天只能专注做其中一件任务,每个任务做的时间可以不连续.问 ...

  9. 面试题 HashMap 原理

    HashMap与HashTable的区别 总结: HashMap是用来代替HashTable的类,一般建议使用HashMap.最核心的区别:HashTable的方法是同步的(线程安全),而HashMa ...

  10. 小学生之JAVA中的分层

    三层架构 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL). 区分层次的目的即为了“高内聚,低 ...