第三讲 数组、字符串
- 格式:ppt
- 大小:952.50 KB
- 文档页数:36
数组&字符串函数一、数组数组说明的一般形式为:类型说明符数组名 [常量表达式],……;其中,类型说明符是任一种基本数据类型或构造数据类型。
数组名是用户定义的数组标识符。
方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
例int a[10]; //说明整型数组a,有10个元素。
float b[10],c[20]; //说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; //说明字符数组ch,有20个元素。
1、声明固定大小的数组有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:1)建立公用数组,在模块的声明段用 Public语句声明数组。
2)建立模块级数组,在模块的声明段用 Private 语句声明数组。
3)建立局部数组,在过程中用 Private 语句声明数组。
声明数组时,在数组名之后跟一个用括号括起来的上界。
上界不得超过 Long 数据类型的范围(-2,147,483,648 到2,147,483,647)。
例如,下列数组声明可出现在模块的声明段:Dim Counters (14) As Integer '15 个元素。
Dim Sums (20) As Double '21 个元素。
为建立公用数组,直接用 Public 取代 Dim。
Public Counters (14) As IntegerPublic Sums (20) As Double在过程之中同样的声明使用 Dim:Dim Counters (14) As IntegerDim Sums (20) As Double第一个声明建立了一个有 15 个元素的数组,其索引号从 0 到 14 。
第二个声明建立了一个有 21 个元素的数组,其索引号从 0 到 20 。
缺省的下界为 0。
为了规定下界,用关键字 To 显式提供下界(为 Long 数据类型):Dim Counters (1 To 15) As IntegerDim Sums (100 To 120) As String在前述声明中,Counters 的索引值范围从 1 到 15,而 Sums 的索引值范围从 100 到 120。
C语言中,字符串数组是一个很常见的数据类型。
在定义字符串数组的过程中,有几种方式可以使用,每种方式都有其特点和适用场景。
接下来,我将从浅入深地介绍这几种方式,并对其进行全面评估。
1. 使用字符数组来定义字符串数组在C语言中,可以使用字符数组来定义字符串数组。
例如:```char strArray[3][20] = {"hello", "world", "c语言"};```这种方式是最基础的定义字符串数组的方法。
它的优点是简单直接,容易理解和使用,适用于简单的场景。
但缺点是不够灵活,每个字符串的长度都是固定的,不能动态调整。
2. 使用指针数组来定义字符串数组除了使用字符数组,还可以使用指针数组来定义字符串数组。
例如:```char *strArray[3] = {"hello", "world", "c语言"};```这种方式相比于字符数组更加灵活,每个字符串的长度可以动态调整。
但要注意的是,需要手动管理每个字符串的内存空间,避免出现内存泄漏等问题。
3. 动态分配内存来定义字符串数组另一种方式是动态分配内存来定义字符串数组。
这种方式可以在运行时动态申请和释放内存,非常灵活。
例如:```char **strArray;strArray = (char **)malloc(3 * sizeof(char *));for (int i = 0; i < 3; i++) {strArray[i] = (char *)malloc(20 * sizeof(char));}strcpy(strArray[0], "hello");strcpy(strArray[1], "world");strcpy(strArray[2], "c语言");```这种方式虽然灵活,但需要手动管理内存,容易出现内存泄漏和指针错误等问题,需要谨慎使用。
C语⾔字符串替换:字符,字符串,字符数组详解⽬录案例描述案例分析必备知识1,字符数组(1)字符数组的定义(2)字符数组的初始化2,字符串概念(1)字符串的概念(2)⽤字符初始化字符数组(3)获取字符串的长度3,字符串与指针4,字符数组与字符指针总结案例描述字符串替换是处理字符串时最常见的操作之⼀,也是学习字符串必须掌握的知识。
本案例要求通过编程实现字符串“Good moring”到“Good evening”的转换。
案例分析我们需要从字符串中被替换的位置开始,将要替换的内容逐个复制到原字符串中,直到字符串结束或者替换的字符串结束为⽌。
为了顺利完成案例,需要先学习字符数组,字符串,字符指针等基础知识。
必备知识1,字符数组字符数组是存放字符数据的数组,其中每⼀个元素都是单个字符(1)字符数组的定义字符数组定义的语法格式如下:char 数组名[常量表达式];char 数组名[常量表达式1][常量表达式2]在上述语法中,分别列举了定义⼀维字符数组和⼆维字符数组的⽅法。
⽰例代码如下:char ch[6];(2)字符数组的初始化在数组定义的同时也可以对数组中的元素进⾏赋值,这个过程称为数组的初始化,⽰例代码如下:char c[5] = {'h','e','l','l','o'};注意字符数组的初始化很简单,但要注意以下⼏点。
(1)元素个数不能多于字符数组的⼤⼩,否则编译器会出错(2)如果初始项少于数组长度,则空余元素均会被赋值为空字符(‘\0')(3)如果没有指定数组⼤⼩,则编译器会根据初始项的个数为数组分配长度(4)也可以初始化⼆维数组(和整型数组基本⼀致)2,字符串概念(1)字符串的概念字符串是由数字、字母、下划线和空格等各种字符组成的⼀串字符,是个常量,字符串的末尾都默认有⼀个'\0'作为结束符。
"abcde"" "上⾯这两⾏都是字符串,只不过第⼆个字符串中的字符都是空格字符串在各种编程语⾔中都是⾮常重要的数据类型,但是C语⾔中没有字符串的固定类型,通常⽤字符数组的形式来存储和处理字符串,这种字符数组必须以'\0'结尾。
【字符串】字符数组及其定义和初始化详解字符串的存储⽅式有字符数组和字符指针。
因为字符串是由多个字符组成的序列,所以要想存储⼀个字符串,可以先把它拆成⼀个个字符,然后分别对这些字符进⾏存储,即通过字符数组存储。
字符数组是⼀个数组,且是存储字符的数组,该数组中⼀个元素存放字符串的⼀个字符。
字符数组的定义因为字符数组⾸先是⼀个数组,所以前⾯讲的数组内容通通都适⽤。
其次它是存放字符的数组,即数组的类型是char型。
⽐如:1char name[10];表⽰定义了10字节的连续内存空间。
1)如果字符串的长度⼤于10,那么就存在语法错误。
这⾥需要注意的是,这⾥指的“字符串的长度”包括最后的‘\0’。
也就是说,虽然系统会⾃动在字符串的结尾加‘\0’,但它不会⾃动为‘\0’开辟内存空间。
所以在定义数组长度的时候⼀定要考虑‘\0’。
2)如果字符串的长度⼩于数组的长度,则只将字符串中的字符赋给数组中前⾯的元素,剩下的内存空间系统会⾃动⽤‘\0’填充。
字符数组的初始化字符数组的初始化与数组的初始化⼀样,要么定义时初始化,要么定义后初始化,下⾯写⼀个程序来说明这个问题:1 #include <stdio.h>2 #include <stdlib.h>3int main(void)4 {5char a[10];6 a[0] = 'i'; a[1] = ''; a[2] = 'l'; a[3] = 'o'; a[4] = 'v';7//空格字符的单引号内⼀定要敲空格8 a[5] = 'e'; a[6] = ''; a[7] = 'y'; a[8] = 'o'; a[9] = 'u';9//空格字符的单引号内⼀定要敲空格10 a[10] = '\0';11char b[10];12 b[0] = 'i'; b[1] = ''; b[2] = 'm'; b[3] = 'i'; b[4] = 's';13//空格字符的单引号内⼀定要敲空格14 b[5] = 's'; b[6] = ''; b[7] = 'y'; b[8] = 'o'; b[9] = 'u';15//空格字符的单引号内⼀定要敲空格16char c[] = "i believe you";17char d[] = {'i', '', 'l', 'i', 'k', 'e', '', 'y', 'o', 'u','\0'};18//空格字符的单引号内⼀定要敲空格19char e[] = {'H', 'e', 'l', 'l', 'o', '', 'W', 'o', 'r', 'l', 'd'};20//空格字符的单引号内⼀定要敲空格21char f[] = "上课睡觉觉, 下课打闹闹, 考试死翘翘";22char g[10] = "";23 printf("a = %s\n", a); //输出字符串⽤%s, 输出参数必须写数组名24 printf("b = %s\n", b);25 printf("c = %s\n", c);26 printf("d = %s\n", d);27 printf("e = %s\n", e);28 printf("f = %s\n", f);29 printf("g = %s\n", g);30return0;31 }⾸先要说明的是,这个程序只有在.cpp⽂件中才能运⾏,在.c⽂件中会有很多错误。