C语言数组(2)--- 一维数组的使用
  uUWKQE7Avyk4 2023年11月02日 35 0

一.导入

我们先来看一段代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void){
	char arr1[] = "abc";
	char arr2[] = {'a','b','c'};
	printf("arr1=%d\n",sizeof(arr1));
	printf("arr2=%d\n",sizeof(arr2));
	printf("arr1=%d\n",strlen(arr1));
	printf("arr2=%d\n", strlen(arr2));
	return 0;
}

请问这段代码执行后,程序分别输出什么()

A. 3 3 3 3

B. 4 3 3 3 

C. 4 4 3 3

D. 4 3 3 随机值


答案是:D,我们首先来看创建数组的这段代码,arr1数组中包含了字符串 "abc\0" ,而arr2字符串中则包含了 'a' 'b' 'c' 这三个字符,我们再来看使用sizeof()所计算的字节数,在第一个printf()函数中,我们使用sizeof()来计算arr1所占空间的大小,我们之前说过了arr1包含了字符串 “abc\0” 每一个字符占一个字节的大小,所以输出4,在第二个printf()语句中我们使用sizeof()来计算arr2数组所占空间的大小,上文我们已经知道了arr2数组中只包含了三个字符,分别是: a b c,所以所占空间大小为 3 输出 3,最后我们使用strlen()函数来求数组arr1的字符串长度,我们上篇文章中讲过在使用strlen()函数计算字符串长度的时候 \0 是不在计算范围内的,所以得到结果3,输出3,但是当我们使用strlen()函数来计算非字符串数组的时候就会出现问题,由于无法找到 \0 (字符串结束标志)所以strlen()会一直读取,直到读取到 \0 才会停止,所以输出的结果为随机值,要想解决这个问题我们有两种修改方式:

方式一:

char arr2[] = {'a','b','c','\0'};

方式二:

char arr2[] = {'a','b','c',0};


二.一维数组的使用

对于数组的使用我们在前面讲过一个操作符 [] ,名字叫:下标引用操作符,其实就是数组访问的操作符

下面我们来看一段代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void){
	char arr[] = "hello";
	printf("% ",arr[0]);
	getchar();
	return 0;
}

这里需要注意程序的最大下标=元素总数-1,下标是从0开始的而不是1,所以这里输出的是h(%c是字符占位符),那有什么办法可以将数组中的元素全部打印出来呢?

答案是肯定的,这里我们就需要使用到for循环

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void){
	char arr[] = "hello";
	for (int i = 0; i < 6; i++){
		printf("%c",arr[i]);
	}
	getchar();
	return 0;
}

我们知道了arr数组中有6个元素分别是: hello\0 这时候我们只需要创建一个循环,当i<6的时候则进入循环,循环输出每一个元素,直到i>=6不再满足条件,程序运行结果如图所示:

C语言数组(2)---  一维数组的使用_strlen

当然我们也可以使用strlen()来计算字符串长度,代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void){
	char arr[] = "hello";
	for (int i = 0; i < (int)strlen(arr); i++){
		printf("%c",arr[i]);
	}
	getchar();
	return 0;
}

这里需要注意strlen()函数返回值的类型是无符号整型(unsigned int)所以编译器可能会告警,我们在前面加上 (int) 来进行强制类型转换即可

那如果我们要求的是一个整型数组呢?

如:

arr[] = {1,2,3,4,5,6,7,8,9,0}

那我们就需要利用sizeof()操作符来计算元素的个数

具体实现如下:

int sz  = sizeof(arr)/sizeof(arr[0]);

我们再将计算得到的个数作为for循环的条件,就可以实现循环输出整型数组中的元素了,代码如下:

#include<stdio.h>
int main(void){
	int  arr[] = {1,2,3,4,5,6,7,8,9,0}; 
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i <sz; i++){
		printf("%d",arr[i]);
	}
	return 0;
}

利用sizeof()来求出数组arr所占用的空间,再将其除以单个元素的大小,就可以得到元素的个数,在for循环中我们只需要保证变量i的值小于元素个数即可,程序运行结果如下:

C语言数组(2)---  一维数组的使用_strlen_02

                                                                                                                 2023/8/21

                                                                                                                          王起舟

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  gBkHYLY8jvYd   2023年12月10日   24   0   0 #include数组i++
  X5zJxoD00Cah   2023年11月30日   39   0   0 GroupEmail字符串
uUWKQE7Avyk4