一些必备的基础C语言语法(2){数组}


一、一维数组的定义与初始化

1、格式:数据类型 数组名[常量表达式]={初值1,初值2,·······};

例:

float mark[100];
char str[200];
int a[4][6];

注意:

(1)几个概念:

• 数组名

• 数组长度

• 数组下标运算符

• 数组维数

• 数组的基类型

(2)数组元素的下标从 0开始! 最大下标是元素个数-1。

例:

int a[5]={1,2,3,4,5};说明:数组a有5个数组元素,分别是a[0],a[1],a[2],a[3],a[4].
int a[5]={1,2}; 说明:将数组a的前2个数组元素分 别赋值为1,2.其余元素初始化为0。
int a[ ]={1,2,3,4}; 说明:数组a的大小根据元素数确

二、一维数组的输入输出

1、对数组中任意元素的独立访问 对整个数组的访问。

//输入
for(int i =0;i<N;i++){
    scanf("%d",&a[i]);
}

2、可以对数组中任何一个元素 进行单独的输入输出,每个 元素等同于一个普通变量。对数组整个元素进行 输入输出时,可以按 下标控制,也可以整 体操作。

例:
chara[20];
scanf(“%s”,a);
printf(“%s”,a);

三、一维数组处理字符串(字符串处理函数)

1、输入输出字符串

(1)输入字符串

gets(字符数组名)

功能:由终端输入字符串到字符数组,以换行结束, 返回字符数组的首地址。

(2)输出字符串

puts(字符数组名)

功能:将以\0结束的字符串输出到终端, 返回的 函数值是字符数组的首地址。

2、strlen函数,计算长度

(#include <string.h>)

函数介绍
函数原型:

size_t strlen ( const char * str );

str:要计算长度的字符串的指针。
strlen函数是一个用于计算字符串长度的函数,它从指定的字符串起始位置开始,逐个字符地计算,直到遇到字符串结尾的 \0 为止。它返回的是字符串中\0之前的字符个数,不包括\0。
关于strlen需要注意以下几点:

参数指向的字符串必须要以 \0结束,否则strlen求得的结果是未知的。
注意函数的返回值为size_t,是无符号的( 易错)。

char str = "Hello World!";
len = strlen(str);
printf("字符串长度:%d\n", len);
 

3、strcpy()函数

C 库函数 strcpy(dest, src) 把 src 所指向的字符串复制到 dest

需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。

参数

  • dest -- 指向用于存储复制内容的目标数组。
  • src -- 要复制的字符串。

例子:

源代码:

#include <stdio.h>
#include <string.h>
 
int main ()
{
  char str1[]="Sample string";
  char str2[40];
  char str3[40];
  strcpy (str2,str1);
  strcpy (str3,"copy successful");
  printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
  return 0;
}

结果:

str1: Sample string
str2: Sample string
str3: copy successful

4、函数 strcat ()

        它的功能是将两个字符串连接(拼接)起来。

函数原型和参数

strcat () 函数的原型如下:

char *strcat (char *dest, const char *src);

函数功能和用法
strcat () 函数的功能是将源字符串 src 所指向的字符串追加到目标字符串 dest 所指向的字符串的结尾。例如,如果 dest 指向的字符串是 “Hello”,src 指向的字符串是 “World”,那么执行 strcat (dest, src) 后,dest 指向的字符串就变成了 “HelloWorld”。

5、字符串函数 strcmp ()

        它的功能是将两个字符串进行比较。

函数原型和参数

strcmp () 函数的原型如下:

int strcmp (const char *str1, const char *str2);

函数功能和用法
strcmp () 函数的功能是将两个字符串进行比较,根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现不同的字符,或者到达字符串末尾(遇见 ‘\0’)。如果返回值小于 0,则表示 str1 小于 str2;如果返回值大于 0,则表示 str1 大于 str2;如果返回值等于 0,则表示 str1 等于 str2。例如,如果 str1 指向的字符串是 “abc”,str2 指向的字符串是 “abd”,那么执行 strcmp (str1, str2) 后,返回值是 -1,表示 str1 小于 str2。

四、二维数组的定义和使用

1、二维数组定义: 数据类型 数组名[常量表达式1][常量表达式2];

• 对数组中的部分元素初始化
int a [2][3]={{1,2},{4}};  //a[0][0]=1,a[0][1]=2;a[1][0]=4其余元素被初始化为0
int a [2][3]={1,2}; //若未指定分行,则按行序依次初始化

• 初始化时可以省略第一维下标—仅对数组全部元素初始化时。
int a [][3]={1,2,3,4,5,6}; //a[0][0]=1,a[0][1]=2;a[1][0]=4其余元素被初始化为0,C根据初始化数据的数量,自动确定第 1维的大小。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值