10-C语言数组、字符串

一、 数组的基本概念

一个int类型的变量能保存一个人的年龄,如果想保存整个班的年龄呢?

1. 什么是数组

数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的

2. 数组的特点

l 只能存放一种类型的数据,比如int类型的数组、float类型的数组

l 里面存放的数据称为“元素”

二、 数组的定义

1. 定义

l 声明数组的类型

l 声明数组的元素个数(需要多少存储空间)

2. 格式

元素类型 数组名[元素个数];

比如:int ages[3];

3. 简单使用

l 简单初始化:int ages[5] = {19, 19, 20, 21, 25};

l 元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始

l 数组元素的访问:a[i]

4. 初始化

l 初始化方式

u int a[3] = {10, 9, 6};

u int a[3] = {10,9};

u int a[] = {11, 7, 6};

u int a[4] = {[1]=11,[0] = 7};

l 常见错误

u int a[];

u int[4] a;

u int a[b];

u a = {10, 11};

u a[4] = {10,9,8,5};

5. 内存分析

l 数组存储空间的大小

l 存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)

l 数组名的作用,查看元素地址

l 数组越界的注意

6. 其他使用

l 数组与函数参数

u 数组元素作为函数参数

u 数组作为函数参数(sizeof注意)

l 遍历数组元素

u 两种方式遍历(while循环和for循环)

u 遍历元素值和元素地址

u 字符数组的使用

7. 习题

1> 提示输入5个学生的成绩,算出平均分、最高分、最低分,然后输出

2> 设计一个函数:int arrayMax(int a[], int count),找出数组元素的最大值

3> 设计一个函数:int arraySum(int a[], int n),求一维数组a前n个数的和

4> 设计一个函数:将一维整型数组中的元素逆序存放。比如本来是1,3,4,2,逆序存放就变成了:2,4,3,1

三、 二维数组

1. 什么是二维数组

l 一个数组能表示一个班人的年龄,如果想表示很多班呢?

l 什么是二维数组?int ages[3][10]; 三个班,每个班10个人

l 相当于3行10列

l 相当于装着3个一维数组

l 二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素

2. 存储

l 存储大小

l 存储结构和顺序

l 存储地址问题

3. 初始化

l int a[3][4] = {1,2,3,4,5,6};

l int a[3][4] = {{},{},{}};

l 数组元素简单访问

l int a[][5] = {3,21,31,2,32,1};

l 注意错误:

int a[3][4];

a[3] = {};

4. 遍历

l 遍历所有的元素

l 遍历地址

l 使用场合:五子棋、俄罗斯方块

四、 字符串

1. 什么是字符串

l 简单的字符串”itcast”

l 一个’i’是一个字符

l 很多个字符组合在一起就是字符串了

2. 字符串的初始化

l char a[] = “123”;  和 char a [] = {‘1’,’2’,’3’};的区别,可以比较大小

l “123”其实是由’1’、’2’、’3’、’\0’组成

l “123”的存储分布

l 字符串的输出”%s”,’\0’是不会输出的

3. \0的作用

l 输出char a[] = {‘o’,’k’};

l 在char a[]前面搞个”mj”

l 输出”mj”

l 再输出a

l char a[] = {‘i’,’t’,’\0’,’c’};

4. 常用字符串处理函数

l strlen(注意中文)

5. 习题

编写一个函数char_contains(char str[],char c),如果字符串str中包含字符c则返回数值1,否则返回数值0

五、 字符串数组

1.使用场合

* 一维字符数组中存放一个字符串,比如一个名字char name[20] = "mj"

* 如果要存储多个字符串,比如一个班所有学生的名字,则需要二维字符数组,char names[15][20]可以存放15个学生的姓名(假设姓名不超过20字符)

* 如果要存储两个班的学生姓名,那么可以用三维字符数组char names[2][15][20]

2.初始化

char names[2][10] = { {‘J‘,‘a‘,‘y‘,‘\0‘}, {‘J‘,‘i‘,‘m‘,‘\0‘} };

char names2[2][10] = { {"Jay"}, {"Jim"} };

char names3[2][10] = { "Jay", "Jim" };

时间: 2024-10-02 22:21:34

10-C语言数组、字符串的相关文章

c语言-数组+字符串处理函数

一.构造类型 基本概念: (1)在C语言中,变量类型除了几种基本类型之外,还有另外一些复杂类型,合称为构造类型. (2)构造类型:是由基本类型构造而成的(如数组.结构体.共同体.枚举型). (3)构造类型的每一个分量是一个变量,它可以是一个简单类型或者构造类型. (4)构造类型的分量的使用方法与简单变量相同 (5)构造类型的分量占用相邻的存储空间. (6)对于构造类型的变量来说,重点是访问其分量的方法. 二.数组 数组概念:按序排列的具有相同类型的变量的集合 (1)用一符号名(数组名)来表示这一

iOS开发入门 ? C语言(字符串、字符串数组、命令行参数)

字符串 1. 概念 用双引号引起来的就是字符串 "a string" //C语言编译器会将两个并列的字符串自动拼接成一个字符串 "a string""another a string" // \是换行连接的标记(一行不够写) "a looooooooooong \ string" 常见ASCII编码: 'A' == 65    'a' == 97    '0' == 48    '\0' == 0 int a[10]; //表

C语言--二维数组,字符串数组,多维数组

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // int a[2][3]={ // {1,2,3}, // {4,5,6} // }; // int a[2][3]={1,2,3,4,5,6}; // //打印单个元素 // printf("%d",a[1][1]); // //元素没赋全,默认为0 // int b[2][3]={{1,2,3},{4}}; // /

C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include <stdlib.h> int main() { int a1=20, a2=345, a3=700, a4=22; int b1=56720, b2=9999, b3=20098, b4=2; int c1=233, c2=205, c3=1, c4=6666; int d1=34, d2=0, d3

go语言之字符串、指针、数组切片

一: 字符串 概述: Go 语言将字符串作为 种原生的基本数据类型,字 符串的初始化可以使用字符串字面量. (1 )字符串是常量,可以通过类 数组 索引访问其字节单元,但是不能修改某个字节的值 (2 ]宇符串转换为切片[]byte( 要慎用,尤其是当数据量较大时(每转换一次都需复制内容) a := ” hello, world !” b : = []byte (a) (3 )字符串尾部不包含 NULL 字符 (4 )字符串类型底层实现是一个二元的数据结构,一个是指针指向字节数组的起点,另一个是长

10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中。例如123放在num[0]中,456放在num[1]中……统计共有多少个整数,并输出这些数。

10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中.例如123放在num[0]中,456放在num[1]中--统计共有多少个整数,并输出这些数. #include <stdio.h> int main(){ void search(char * parr, int * pnum); char arr[100],* parr; int num[30],* pnum; parr=arr;

(C语言)字符串比较函数,指针数组与数组指针

问题描述: 写一个函数,用于比较两个字符串的比较(string_compare). 程序分析: (1)主要思想:传入两个字符串后,比较这两个字符串中的每个元素,如果第一次比较就不相等,就不要让它进入到下面的比较中.这样一来,将它返回一个相减的值(即:两数组中开始不相等的那两个元素相减,返回值(int类型),是ASCII码值相减).进入比较的过程中时,相等就返回0:其他情况都返回那个相减的值. (2)主要方式:定义指针数组,并对其初始化.然后照上面的思想,进行代码的实现. 代码如下: /***指针

C语言之字符串处理函数

C语言中字符串处理函数介绍 下面介绍8种基本的常用的字符串处理函数,在数值数组中也常常用到(部分函数).所有的C语言编译系统中一般都提供这些函数. 1.puts函数——输出字符串的函数 一般的形式为puts(字符串组) 作用:将一个字符串输出到终端.如,char一个string,并赋予初值.调用puts(string);进行字符串的输出. 2.gets函数——输入字符串的函数 一般的形式:gets(字符数组) 作用:从终端输入一个字符串到字符数组,并且得到一个函数值成为字符数组的起始地址. ge

C语言之字符串典型例题解析

今天又遇见几个好题,和以前的一些凑一块写一篇文章,作为我延迟去自习室的一个借口吧. 首先是第一题 1 int fun(char* s){ 2 char* t = s; 3 while(*t++); 4 return t-s; 5 } 6 fun函数的功能是_______ 7 比较两个字符串的大小 8 计算s所指字符串占用内存的大小 9 技术s所指字符串的长度 10 将s所指字符串复制到字符串t中 题目有四个选项,为什么我会选这个题呢,因为自己在面试C++的岗位中第一次遇见,印象里好像是写错了,然

C 语言数组

#import <Foundation/Foundation.h> #define knum 5 #define kArr "shuguangnvshen" int main(int argc, const char * argv[]) { //数组:数组是一组具有相同数据类型的成员组成的有序的集合 //格式:类型修饰符 数组名=(赋值运算符) {数组元素}; //访问数组元素:数组名加下标; /* int array[]={12,3,4,8}; 0 1 2 3 array