C语言学习笔记--指针与字符串
字符类型
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语言学习笔记--指针与字符串的更多相关文章
- c语言学习笔记 - 指针和字符串
前面学习了字符串是一种字符数组,又知道了指针变量和数组的关系,这里来看一下指针和字符串的关系. #include <stdio.h> int main(void){ char str = ...
- c语言学习笔记 - 指针和数组
结合内存存储数据的机制,c语言里指针的出现和使用也就不奇怪了,如果先学了内存的一些知识,以及程序运行机制,到了c指针这块就会清晰很多. #include <stdio.h> int mai ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 字符串
C++ 提供了以下两种类型的字符串表示形式: C 风格字符串 C++ 引入的 string 类类型 C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持.字符串实际上是使用 null 字符 ...
- c语言学习笔记.指针.
指针: 一个变量,其值为另一个变量的地址,即,内存位置的直接地址. 声明: int *ptr; /* 一个整型的指针,指针指向的类型是整型 */ double *ptr; /* 一个 double 型 ...
- C语言学习笔记--指针阅读技巧
1. 指针阅读技巧:右左法则 (1)从最里层的圆括号中未定义的标示符看起 (2)首先往右看,再往左看 (3)遇到圆括号或方括号时可以确定部分类型,并调转方向 (4)重复 2.3 步骤,直到阅读结束 注 ...
- C语言学习笔记--指针和数组的关系
1.数组的本质 (1)数组是一段连续的内存空间 (2)数组的空间大小:sizeof(array_type)*array_size; (3)数组名可看做指向数组第一个元素的常量指针 (4)数组声明时编译 ...
- C语言学习笔记--指针概念
指针也是一种变量,占有内存空间,用来保存内存地址,在32位系统中指针的占用的内存大小为4个字节 1.*号的意义 (1)在指针声明时,*号表示所声明的变量为指针 (2)在指针使用时,*号表示取指针所指向 ...
- Go语言学习笔记九: 指针
Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
随机推荐
- Java习惯用法总结
在微博中看到的一个不错的帖子,总结的很详细,拷贝过来,一是为了方便自己查阅,也能和大家一起共享,后面有原文的链接地址: 在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的.在 ...
- 西装定制平台Indochino获$1350万B轮融资 - 国际B2C - 亿邦动力网
西装定制平台Indochino获$1350万B轮融资 - 国际B2C - 亿邦动力网 西装定制平台Indochino获$1350万B轮融资 作者: 韦龑来源: i黑马网2013-03-29 11:05 ...
- OBJ-C
1.直接赋值 NSString *name = @"Starain"; 2.用已经存在的字符串进行初始化 NSString *name2 = [NSString stringWit ...
- MySQL行列转换
分类: Mysql/postgreSQL 在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义.http://topic.csdn.net/u ...
- ganglia单播配置
背景: 有时,由于当前网络不支持组播等种种原因,使用gmond默认的配置gmetad不能获取到各个客户端的全部数据,http://x.x.x.x/ganglia页面一个cluster组只能展示一 ...
- swift学习资料初探
1. http://code.csdn.net/news/2820075
- [Unit Testing] Angular Test component with required
export default (ngModule) => { describe('Table Item component', () => { let $compile, directiv ...
- 95秀-PullToRefreshListView 示例
正在加载.暂无数据页面 public class RefreshGuideTool { private RelativeLayout rl_loading_guide;//整个View ...
- 小学生之Map集合框架的使用
Map用于保存具有映射关系的数据(key-vlaue).Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false Map中包含了一个keySet()方法, ...
- Wijmo 日历插件
说明: 因为项目(OA)的需要,我负责开发日程的模块,相信大家用过谷歌的日历了吧,是不是觉得挺好用,但又苦于无法实现? 这里告诉你一个很好的插件,Wijmo,而里面有一个类似谷歌的日历事件插件,真的很 ...