gpt4 book ai didi

C语言一维数组初步学习笔记

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C语言一维数组初步学习笔记由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

数组 。

可以存储一组或者多组数值的变量,里面包含多个元素,数组的每个成员都是一个数组元素.

一维数组 。

定义:类型 数组名[常量表达式] = {值1, 值2, 值3…},

?
1
2
3
4
int a[3] = {0, 1, 2};
float f[2] = {1.2, 2.3, 3.14};
char str[] = { 'h' , 'e' , 'l' , 'l' , 'o' };
chat str1 = "iPhone" ; //这也是定义字符数组的方法,字符数组后面会详细讲解,这里先了解一下

当数组元素个数为变量时,只能声明数组,不能直接赋值:

?
1
2
3
int length = 4;
int a[length]; //这样可以
int a[length] = {2, 4, 6, 8}; //这样的话就会报错

注意事项:

1、系统不会检测数组元素的下标是否越界,编程时,必须保证数组下标不能越界.

2、不能这样定义数组 int array[] = {}; //数组个数和初始值不能同时为空 。

3、也不能这样定义数组 int array[2] = {1, 2, 3}; //数组的值的个数大于数组的个数 。

4、数组是一个整体,不能直接参加运算,只能对单个元素进行处理,通常用到数组的地方都会用到循环 。

常见数组操作 如果初始化数组的时候,数组的元素个数确定,那么常量表达式可以不写:

?
1
int a[] = {1, 3, 5, 7, 9}; //数组的长度为5 相当于int a[5] = {1, 3, 5, 7, 9};

int 就是数组类型,表示这个数组中的每个元素都是 int 类型.

访问:通过数组名+下标去访问数组中的元素,而且注意数组的下标是从 0 开始的,a[0] 就是第一个元素,a[1] 代表第二个元素,a[2] 代表第三个元素。所以数组的最后一个元素就是 数组的长度 – 1,一定不要写a[3],这样的话就属于数组越界.

在数组的访问的时候我们通常会通过 for 循环来操作,这个操作一般称为遍历 。

?
1
2
3
4
5
6
7
8
9
10
11
12
int ages[28];
//循环赋值
for ( int i = 0; i < 28; i++)
{
   int age = arc4random() % 13 + 18; //每个人的年龄的范围是:18 ~ 30 之间的随机值
   ages[i] = age; //给每个元素赋值
}
//访问,也叫遍历
for ( int i = 0; i < 28; i++)
{
   printf ( "a[%d] = %d " , i, ages[i]);
}

两个数组的每个元素对应相加,相加的和存放到第三个数组中:

?
1
2
3
4
5
6
7
8
int a1[] = {2, 4, 5, 6, 10};
int a2[] = {1, 3, 4, 5, 6};
int a3[5];
for ( int i = 0; i < 5; i++)
{
   a3[i] = a1[i] + a2[i];
   printf ( "a3[%d] = %d " , i, a3[i]);
}

输出结果为:

?
1
a3[0] = 3 a3[1] = 7 a3[2] = 9 a3[3] = 11 a3[4] = 16

数组的长度如何计算:

sizeof(数组名)/sizeof(数组第一个元素) 。

?
1
2
3
int arr[] = {2, 3, 4, 6, 7};
int length = sizeof (arr) / sizeof (arr[0]);
printf ( "length = %d\n" , length);

输出结果为:

?
1
length = 5

字符数组:用于存放字符变量的数组称为字符数组,有两种定义格式:

?
1
2
char str[4] = { 'a' , 'b' , 'c' , 'd' };
char str2[] = "iPhone" ; //另外一种方式

字符串的输出:

?
1
printf ( "str2 = %s\n" , str2); //%s 输出字符串,遇到 '\0' 结束

有'\0'结束标识的字符数组也称为字符串,系统提供了许多的一些字符串的函数 。

size_t strlen(const char *):计算字符串长度,是字符串的有效长度,不算'\0′ 。

?
1
2
3
char str[] = "iPhone" ;
unsigned long length = strlen (str); //strlen 表示有效长度
printf ( "length = %lu\n" , length);

输出结果为:

?
1
length = 6

strlen() 的实现原理:就是遍历字符串,当遇到 ‘\0′ 的时候就结束.

char *strcpy(char *, const char *):字符串拷贝 。

?
1
2
3
char str1[] = "Unity" ;
char str2[] = "Android....." ;
printf ( "%s\n" , strcpy (str1, str2));

输出结果:

?
1
Android

char *strcat(char *, const char *):字符串拼接 。

?
1
2
3
char str1[] = "Unity" ;
char str2[] = " iPhone" ;
printf ( "%s\n" , strcat (str1, str2));

输出结果:

?
1
Unity iPhone

int strcmp(const char str1*, const char str2*):字符串比较,并且根据 str1 按照字典顺序小于、等于或大于 str2 的结果分别返回负整数、0或正整数。该返回值是 str1 和 str2 由前向后逐字符比较时遇到的第一个不相等字符处的字符的差值 。

?
1
2
3
char str1[] = "Unity" ;
char str2[] = "iPhone" ;
printf ( "%d\n" , strcmp (str1, str2));

输出结果:

  。

复制代码 代码如下:
-20
指针访问数组
如果pa指向数组中的某个元素,那么pa+1将指向下一个元素,pa+i指向下i个元素。所以,若果pa指向a[0],那么*pa其实就是a[0],*(pa+1)就是a[1],*(pa+i)就是a[i]。根据这个思路,我们可以使用指针来访问数组。
?
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main( int argc, char *argv[])
{
  int score[10]={76,85,90,67,59,79,82,95,91,65};
  int wait, length, i;
  length = sizeof (score) / sizeof (score[0]);
  for (i = 0; i < length; i++)
  {
  printf ( "%d \n" , *(score + i));
  }
  scanf ( "%d" , &wait);
}

程序输出:

?
1
2
3
4
5
6
7
8
9
10
76
85
90
67
59
79
82
95
91
65

数组下标与指针关系很密切。执行语句 pa = &a[0] 后,pa 和 a 就具有相同的值了,并且 *pa=a[0]。实际上C语言在计算数组下标时也是使用指针来完成的。下标与指针其实是等价的.

当把一个数组名传递给一个函数的时候,实际上传递的是该数组的第一个元素的地址。所以,数组名参数必须是一个指针.

计算字符串长度的程序可以写成以下:

?
1
2
3
4
5
6
7
8
int strlen ( char *s)
{
  int n;
  
   for (n = 0; *s != '\0' ; s++)
    n++;
   return n;
}

s 是指针,也就是一个变量,对它进行自增是合法的.

最后此篇关于C语言一维数组初步学习笔记的文章就讲到这里了,如果你想了解更多关于C语言一维数组初步学习笔记的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com