博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言基础复习:字符,字符数组,字符串,字符指针
阅读量:6211 次
发布时间:2019-06-21

本文共 4489 字,大约阅读时间需要 14 分钟。

1. 概述

数据类型是现实世界信息表示基本元素。字符则是基本数据类型之一,与之对应的是数字。

限于字符的数量,一般字符类型都是单字节存储。
Linux的shell环境中,shell作为一种弱类型语言,仅存在字符(串)数据类型,需要数字时则会把字符串转换为字符。
恰是这种单一的弱类型脚本语言设定,赋予shell环境强大的字符和文本处理能力。
本篇则主要介绍C语言种有关字符的知识点。

2. 字符

2.1 字符定义和大小

这里的字符,值得肯定是单个字符,包括普通字符和转义字符。超过一个以上的字符,叫做字符串。

C语言示例代码如下:

#include
#include
int main(){ printf("char size is : %d\n",sizeof(char)); printf("char max is:%d,min is:%d\n",INT8_MAX,INT8_MIN); printf("unsigned char max is:%d\n",UINT8_MAX); return 0;}

输出结果为:

char size is : 1char max is:127,min is:-128unsigned char max is:255

2.2 字符的输入和输出

C语言示例代码如下:

#include
#include
int main(){ //编译器分配 char a = 'A'; printf("%c\n",a); //标准输入输入 printf("input your char:\n"); a = getchar(); printf("your have input:"); putchar(a); printf("\n"); return 0;}

输出结果:

Ainput your char:Byour have input:B

2.3 字符的计算

字符的计算,以字符对应的数字为计算元素

C语言示例代码如下:

#include
int main(){ //算术运算 char a = 'A'; char b = 'Z'; printf("%c,%d %c,%d\n",a,a,a+1,a+1); if ( b > a ) printf("%c(%d) > %c(%d)\n",b,b,a,a); else printf("%c(%d) < %c(%d)\n",b,b,a,a); return 0; }

输出结果为:

A,65 B,66Z(90) > A(65)

3. 字符数组

字符数组跟整型数组一样定义和使用。

字符数组输出时,通过格式化输出,即可以输出单个字符,也可以输出字符串。
C语言示例代码如下:

3.1 字符数组的定义和大小

#include
#define NAME "liwanliang"int main(){ int i = 0; //第1种方式:用数组原始方式初始化字符数组 char name1[] = {'l','i','w','l'}; printf("%d\n",sizeof(name1)); for ( i = 0; i < sizeof(name1); i++ ) { printf("[%c]",name1[i]); } printf("\n"); //第2种方式:用字符串初始化字符数组 char name2[sizeof(NAME)] = NAME; printf("%d\n",sizeof(NAME)); for ( i = 0; i < sizeof(NAME); i++ ) { printf("[%c]",name2[i]); } printf("\n"); return 0;}

输出结果如下:

4[l][i][w][l]11[l] [i] [w] [a] [n] [l] [i] [a] [n] [g] []

注意以下代码的区别:

#include
#include
int main(){ int i = 0; char a[5] = "hello"; char b[8] = "hello"; printf("sizeof(a):%d,strlen(a):%d\n",sizeof(a),strlen(a)); printf("sizeof(b):%d,strlen(b):%d\n",sizeof(b),strlen(b)); for ( i = 0; i < 5; i++ ) { printf("[%c]",a[i]); } for ( i = 0; i < 8; i++ ) { printf("[%c]",b[i]); } printf("%s\n",a); printf("%s\n",b);}

输出结果为:

sizeof(a):5,strlen(a):6sizeof(b):8,strlen(b):5[h][e][l][l][o][h][e][l][l][o][][][]hellohello

3.2 字符数组的输入和输出

字符数组的输入,可以如3.1部分定义种讲述的通过编译器分配,也存在其他输入方式:

  1. 函数传递
  2. 文件输入
  3. 网络输入

C语言示例代码如下:

//以下仅仅是一个简单的输入字符存入字符数组的情况,程序逻辑性脆弱,仅作示例#include
#define N 10int main(){ int i = 0; char name[N]; do { name[i] = getchar(); i++; }while( '\n' == getchar() && i < 10); for ( i = 0; i < sizeof(name); i++ ) { printf("%c",name[i]); } printf("\n"); return 0;}

3.3 字符数组的计算

字符的计算包括算术计算和逻辑计算。

以下是一个对字符数组进行排序的C语言示例代码:

4. 字符串

4.1 字符串的定义和大小

C语言示例代码如下:

#include
#include
int main(){ //第1种方式:以字符数组打印字符串 char name[] = "liwanliang"; int i = 0; //for ( i = 0; i < strlen(name); i++ ) for ( i = 0; i < sizeof(name); i++ ) { printf("%c",name[i]); } printf("\n"); printf("my name is:%s\n",name); //第2种方式:以字符指针的方式打印 char *name1 = "liwanliang"; printf("my name is:%s\n",name1); return 0;}

输出结果如下:

liwanliangmy name is:liwanliangmy name is:liwanliang

4.2 字符串的输入和输出

4.3 字符串的计算

5 字符指针

一言以蔽之,指针就是数据类型(内存大小)的内存地址,用指针运算(取址,赋值)来操作内存。

内存地址同样以变量的形式存放,故名曰指针变量。
指针是变量说法不准确,指针是存放内存地址的变量。
因为变量有只读变量(常量的一种表现形式),故指针有指针常量。

5.1 指向字符的指针

字符指针,就是指向字符的指针不准确。

字符指针,可以指向字符,字符数组,或者字符串。因为字符指针,是指向字符型内存区域的指针。
本部分探讨指向单一字符的指针。
C语言示例代码如下:

#include
int main(){ char a = 'a'; //p需要用char型指针初始化 char *p = &a; printf("input your char:\n"); *p = getchar(); printf("you have input char:"); putchar(*p); printf("\n"); //printf("%c\n",*p); return 0;}

输出结果如下:

input your char:Ayou have input char:A

5.2 指向字符数组的指针

5.3 指向字符串的指针

6. 二维字符数组

6.1 纯数组表示

C语言代码如下:

#include
int main(){ char name1[3][5]={
{'l','i',},{'w','a','n',},{'l','i','a','n','g'}}; int i,j = 0; for ( i = 0; i < 3; i++ ) { for ( j = 0; j < 5; j++ ) { printf("%c",name1[i][j]); } printf(" "); } printf("\n"); char name2[3][5]={ "li","wan","liang"}; for ( i = 0; i < 3; i++ ) { printf("%s ",name2[i]); } printf("\n");}

输出结果如下:

li wan liangli wan liang

6.2 字符指针表示

C语言示例代码如下:

转载于:https://www.cnblogs.com/liwanliangblog/p/9538022.html

你可能感兴趣的文章
Struts2之Action
查看>>
Python3.4 12306 2015年3月验证码识别
查看>>
使用Gitblit 在windows 上部署你的Git Server
查看>>
object pool
查看>>
Numpy.random中shuffle与permutation的区别(转)
查看>>
Spring Cloud Config 服务端与 客户端之间的关系
查看>>
Lemur(狐猴)一个用于自然语言模型和信息检索研究的系统
查看>>
[iBoard 电子学堂][第〇卷 电子基础 ]第三篇 单片微控制器、微处理器
查看>>
完成端口IO模型
查看>>
SQL FOR XML
查看>>
hdu 3068 最长回文(manachar求最长回文子串)
查看>>
9年经验,总结SEO职业瓶颈
查看>>
【转】李开复:现代企业需要的7种人才
查看>>
Leetcode: Best Time to Buy and Sell Stock IV
查看>>
转: git常用命令
查看>>
HTTP状态码(HTTP Status Code)
查看>>
新浪微博客户端(20)-集成MJRefresh
查看>>
【Java面试题】5 Integer的int 的种种比较?详细分析
查看>>
Servlet3.0新特性WebFilter(Annotation Filter)详解
查看>>
js 上一步 下一步 操作
查看>>