指针与字符串--字符类型

字符类型

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

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

  ②‘’也是一个字符

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

 1 #include<stdio.h>
 2 int main()
 3 {
 4     char c;
 5     char d;
 6     c = 1;
 7     d = ‘1‘;
 8     printf("c = %d,d = %d,d = %c\n",c,d,d);
 9     return 0;
10 }//运行结果: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‘

 1 #include<stdio.h>
 2 int main ()
 3 {
 4     char c;
 5     int d;
 6     scanf("%c",&c);
 7     printf("c = %d,c = ‘%c‘\n",c,c);
 8     scanf("%d",&d);
 9     printf("d = %d,d = ‘%c‘\n",d,d);
10     return 0;
11 }//运行结果:输入 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);

  有何不同?

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

字符计算  

1 #include<stdio.h>
2 int main()
3 {
4     char c = ‘A‘;
5     c++;
6     printf("%c",c);
7     return 0;
8 }

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

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

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

  于是:

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

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

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

  

  

时间: 2024-08-05 16:28:03

指针与字符串--字符类型的相关文章

Mysql 支持的字符类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的.尤其和oracle某些不一致. 比如没有number类型,特此总结下来方便以后查询 MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准SQL数值数据类型. 这些类型包括严格数值数据类型(INTEGER.SMALLINT.DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT.REAL和DOUBLE PRECISION). 关键字INT是INTEGER的同义词,关

MySQL 数据类型:数值、日期和时间、字符串等类型详解

MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准SQL数值数据类型. 这些类型包括严格数值数据类型(INTEGER.SMALLINT.DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT.REAL和DOUBLE PRECISION). 关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词. BIT数据类型保存位字

c与c++中输出字符指针和字符串指针的问题

首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针,或者字符串数组(这里的指针变量c,系统会为其重新分配内存. c程序示例: 1  #include <stdio.h>  2   3 int main()  4 {  5   char *a="hello";  6   char b[]={'l','i','n','u','x'};  7   char *c=&b[1];  8   9    printf("%c\n"

字符串指针变量与字符数组的区别

使用字符串指针变量与字符数组的区别 (1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符.而系统只为指针变量pc分配4个存储单元,用于存放一个内存单元的地址.(2)初始化赋值含义 字符数组与字符指针变量的初始化赋值形式相同,但其含义不同.例如: char str[ ] ="I am a student ! " ,s[200]; char *pc="You

字符 字符串 字符数组 字符串指针 指针数组

一.字符串指针.字符数组 1. 字符串指针:字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以'\0'作为串的结束. char *ps="C Language"; 可以写为: char *ps;  #ps字符串指针,是指针,是一个变量, ps="C Language"; #ps为字符串的首地址,利用ps++可遍历字符串,字符串存储在以ps为开始地址的地段连续的内存空间中,并以'\0'作为字符串的结束.

Delphi 基本数据类型列表 高级数据类型列表 字符类型查询列表清单

长长的列表文字类型文件 分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 2147483647 4 有符号32位 Cardinal 0 .. 4294967295 4 无符号32位 Shortint -128 .. 127 1 有符号8位 Smallint -32768 .. 32767 2 有符号16位 Longint -2147483648 .. 2147483647 4 有符号32位 Int64 -263 .. 263 8 有符号64位 Byte

深入理解C指针之五:指针和字符串

基础概念 字符串可以分配到内存的不同区域,通常使用指针来支持字符串操作.字符串是以ASCII字符NUL结尾的字符序列.ASCII字符NUL表示为\0.字符串通常存储在数组或者从堆上分配的内存中.不过,并非所有的字符数组都是字符串.例如,字符数组可能没有NUL字符. C中有两种类型的字符串. * 单字节字符串.由char数据类型组成的序列. * 宽字符串.由wchar_t数据类型组成的序列. wchar_t数据类型用来表示宽字符串,可能是16位或32位宽.这两种字符串都以NUL结尾.宽字符主要用来

指针 指针与数组 指针与字符串 指针与函数 结构体与指针 宏

指针 指针与数组 指针与字符串 指针与函数?? 指针与数组 1.数组名:数组元素首地址 eg: int array[3]={1,3,6}; 这里array 恒等于&array[0] 2.int *p = a; int *p = 0; int a[]={0}; 3.int *p = a; 均指向数组的首地址 *p是? *(p+1)是?(*p)+1是? *(p+1)决定向下移动几个字节是类型 4.指针可以当数组名使用 p[1] = 3; 恒等于a[1] ;恒等于*(p+1);恒等于*(a+1) 5.

关于未成品的问题:字符类型和其他种种

0.2版本的随机出题器,问题还有,等着下次解决.先把作业交了再说. 完全重做了,基于VC(偷懒所以使用了MFC的CString类),但是也导致了字符类型的问题. 首先是大概:出题和答案分成了两个类,主函数用来控制参数和计算分数等. 1.答案部分(一个算数计算器) 该计算器支持+-*/^五种运算符,也支持括号(包括多重) 1 double EvaluateExpression(char* MyExpression) 2 { 3 //表达式求值的算符优先算法. 4 //设OPTR和OPND分别为运算