C语言——数组、字符串

 

一、一维数组

      存放一组同种类型的数据。

      1、数组的定义  

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

       

1      //都是正确写法
2     int ages[5] = {10 , 11, 12, 67, 56};
3     int ages[5] = {10, 11};
4     int ages[5] = {[3] = 10, [4] = 11};
5     int ages[] = {10, 11, 14};
6     
7     // 错误写法
8      int ages[];

      2、 数组的初始化        

     

1 // 错误写法
2     //只能在定义数组的同时进行初始化
3     int ages[5];
4     ages = {10, 11, 12, 14};
//正确写法
//只能在定义数组的同时进行初始化
    int ages[5] = {10, 11, 12, 14};
1 // 正确写法
2     /*
3     int count = 5;
4     int ages[count];
5     ages[0] = 10;
6     ages[1] = 11;
7     ages[2] = 18;
8     */

    3、 数组的基本使用

 1 / 数组的基本使用
 2 void arrayUse()
 3 {
 4     // 数组的定义格式: 类型 数组名[元素个数];
 5     int ages[5] = {19, 29, 28, 27, 26};
 6     // 19 19 28 27 26]
 7     ages[1] = 29;
 8     
 9     /*
10      ages[0] = 19;
11      ages[1] = 19;
12      ages[2] = 28;
13      ages[3] = 27;
14      ages[4] = 26;
15      */
16     
17     /*
18      遍历:按顺序查看数组的每一个元素
19      */
20     for (int i = 0; i<5; i++)
21     {
22         printf("ages[%d]=%d
", i, ages[i]);
23     }
24 }

    4、 数组在内存中的分析

       ①  数组存储空间的大小 

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

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

   

 1 #include <stdio.h>
 2 
 3 /*
 4  提示用户输入5个学生的成绩,算出平均分并且输出
 5  */
 6 
 7 int main()
 8 {
 9     
10     
11     // 1.定义一个数组来存储成绩
12     int scores[5];
13     
14     // 2.提示输入成绩
15     // 用来存储总分
16     int sum = 0;
17     for (int i = 0; i<5; i++) {
18         // 2.1 提示输入某个学生的成绩
19         printf("请输入第%d个学生的成绩:
", i + 1);
20         // 2.2 存储当前学生的成绩
21         scanf("%d", &scores[i]);
22         // 2.3 累加成绩
23         sum += scores[i];
24     }
25     
26     // 3.计算平均分,并且输出
27     printf("平均分是%f
", sum/5.0);
28     return 0;
29 }

5、 数组与函数的关系和应用

    ① 数组作为函数参数,可以省略元素个数

    ②  数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组

   

 1 #include <stdio.h>
 2 void change(int array[])
 3 {
 4     //printf("array==%p
", array);
 5     
 6     array[0] = 100;
 7 }
 8 
 9 void change2(int n)
10 {
11     n = 100;
12 }
13 
14 int main()
15 {
16     int ages[6] = {10, 11, 10, 11, 10, 11};
17     
18     //printf("ages==%p
", ages);
19     
20     change(ages);
21     
22     //change2(ages[0]);
23     
24     printf("%d
", ages[0]);
25     return 0;
26 }

二、二维数组

     二维数组是一个特殊的一维数组:它的元素是一维数组

    1、数组的定义和初始化

        

1   int a[3][4] = {1,2,3,4,5,6};
2   int a[3][4] = {{},{},{}};
3 //数组元素简单访问
4   int a[][5] = {3,21,31,2,32,1};
5 
6 //注意错误:
7   int a[3][4];
8   a[3] = {};

   2、二维数组的简单运用

    

 1 /*
 2      1 浅蓝色
 3      2 深蓝色
 4      3 黄色
 5      4 红色
 6      -1 没有
 7      */
 8     
 9     int cubes[5][5] = {
10         {1, -1, -1, -1, -1},
11         {1, 1, -1, 2, -1},
12         {4, 1, 2, 2, 2},
13         {4, 3, 3, 3, 3},
14         {4, 3, 3, 3, 3}
15     };
16     

 三、字符串

     很多单个字符组合在一起,成为字符串。

     1、字符串的初始化

         

 1 // 字符串的一个初始化
 2 void test2()
 3 {
 4     // 的ASCII码值是0
 5     // 都是字符串
 6     char name[8] = "it";
 7     char name2[8] = {'i', 't', ''};
 8     char name3[8] = {'i', 't', 0};
 9     char name4[8] = {'i', 't'};
10     
11     // 不算是一个字符串(只能说是一个字符数组)
12     char name5[] = {'i', 't'};
13 }

     2、 的作用

       字符串结束的标记,从字符串开始开始地址输出字符,直到遇见结束

      

 1 #include <stdio.h>
 2 
 3 /*
 4  printf("%s", name2);
 5  会从name2这个地址开始输出字符,直到遇到为止
 6  */
 7 
 8 int main()
 9 {
10     
11     char name2[] = {'o', 'k'};
12     
13     printf("%s
", name2);
14     
15   
16     
17     return 0;
18 }

   3、 Strlen(字符串处理函数)

        strlen函数:计算字符串长度

         ①  计算的是字符数,并不是字数。一个汉字算作3个字符

         ②  计算的字符不包括

         ③  从某个地址开始数字符的个数,直到遇到为止

     

 1 // strlen函数声明在string.h文件中
 2 #include <string.h>
 3 #include <stdio.h>
 4 
 5 int main()
 6 {
 7    
 8     char name2[] = {'0', '', '6'};
 9     
10     int size = strlen(name2);
11     
12     printf("%d
", size);
13  
14     
15     return 0;
16 }

四、 字符串数组

       字符串数组的好处,可以用一个数组存放一个字符串,方便对字符串中的单个字符进行操作,存储多个字符串可以使用二维数组。

       字符串的初始化

        

 1 #include <stdio.h>
 2 int main()
 3 {
 4     char name[] = "jack";
 5     
 6     char name1[] = "rose";
 7     
 8     char name2[] = "jim";
 9     
10     char name3[] = "jake";
11     
12     char names[2][10]= {"jack", "rose"};
13     
14     char names2[2][10] =
15     {
16         {'j', 'a', 'c', 'k', ''},
17         {'r', 'o', 's', 't', ''}
18     };
19     
20     
21     return 0;
22 }
原文地址:https://www.cnblogs.com/gaizuojia/p/4356464.html