c语言指针与字符,C语言学习笔记--指针与字符串

字符类型

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

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

②‘’也是一个字符

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

#include

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

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

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

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语言学习笔记 - 指针和字符串

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

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

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

随机推荐

实现数据库的跨库join

功能需求 首先要理解原始需求是什么,为什么要跨库join.举个简单的例子,在日志数据库log_db有一份充值记录表pay_log,里面的用户信息只有一个userid:而用户的详细信息放在主库main_ ...

Learning jQuery, 4th Edition 勘误表

来源于:http://book.learningjquery.com/3145/errata/ Chapter 1 page 14 The CSS snippet is correct, but it ...

tomcat作为windows服务启动失败解决方法

再使用如下方法注册windows服务时,出现问题: set CATALINA_BASE=E:\tomcat\tomcat-web-server set CATALINA_HOME=E:\tomcat\ ...

(转载)static全局变量与普通的全局变量有什么区别?

(转载)http://www.cnblogs.com/StudyRush/archive/2010/09/25/1834922.html 全局变量(外部变量)的说明之前再冠以static 就构成了静态 ...

GridView合并多行列值

)                    {                        gvr.Cells[cellNum].RowSpan = rowSpanNum;               ...

instanceof 原理

运行流程 function instance_of(L, R) {                               //L 表示左表达式,R 表示右表达式   var O = R.prot ...

2017/05/22 java 基础 随笔

多态:一种事物多种形态 前提:1.子父类继承关系 2.方法复写.重写 3.父类引用指向子类对象 成员变量: package com.huawei; public class Demo1 { publi ...

Ubuntu 中启用 root 帐号

参考:http://linuxtoy.org/archives/howto_enable_ubuntu_root_account.html 如果你实在需要在 Ubuntu 中启用 root 帐号的话, ...

剑指offer66:机器人的活动范围

地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能够进入方格 ...

你可能感兴趣的:(c语言指针与字符)