[C] 6 数组

版权声明:本文为博主原创文章,若有错误之处望大家批评指正!转载需附上原文链接,谢谢! https://blog.csdn.net/summer_dew/article/details/83926189

数组

定义

类型符 数组名[常量表达式]

void func(int n) {
	int a[2*n]; //合法,n的值从实参传来
}

static int a[2*n]; //不合法,a数组指定为static存储方式

不进行初始化,值不可预料

一维数组

定义

int a[10] = {0,1,2,3,4,5,6,7,8,9} //对全部数组元素赋予初值
int a[10] = {0,1,2,3,4} //部分赋值,其他默认为0
int a[] = {1,2,3,4,5} //赋初值时,个数已定,不指定数组长度

如果在定义数值型数组时,指定了数组的长度并对之初始化,凡未被“初始化列表”指定初始化的数组元素,系统自动初始化为0,但

  1. 字符型数组:’\0’
  2. 指针型数组:NULL,即空指针

二维数组

定义

类型说明符 数组名[常量表达式][常量表达式]

int a[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} } //全赋值
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12} //全赋值
int a[3][4] = { {0,1}, {}, {2} } //其余自动为0
int a[][4] = { {1,2,3}, {}, {0,10} } //维度的长度缺省

字符数组

定义

ASCII值为0,结束标志符’\0’

char c[] = {"I am happy"}; //初始化,系统在最后面自动加'\0'
char c[] = "I am happy"; //初始化
char c[] = {'I', ' ', 'a',...,'y','\0'}; //等同于

输入输出

%c

逐个字符输入输出

%s

将整个字符串一次输入或输出
%s,对字符串(string)的输入输出

  • 输出项是字符数组名,遇’\0’停止输出
  • 输入scanf("%s",c); //c为数组名,char c[15];
  • 分隔符:空格、回车
  • 未赋值的自动置’\0’

printf("%o",c); //用八进制形式输出数组c的起始地址

字符串处理函数

#include<string.h>

函数名 说明
puts(str) 输出字符串(以后’\0’结束的字符序列)
gets(str) 输入字符串,分隔符为回车
strcat(str1,str2) String catenate结果放在字符数组1中
strcpy(str1,str2) string copy将字符串2复制到字符串1
strncpy(str1,str2,n) 将str2前面n个字符复制到str1,取代str1前面的N个字符,n应该<str1的长度
strcmp(str1,str2) string compare,自左至右逐个字符相比(ASCII码)
strlen(str) string length,不包括’\n’
strlwr(str) string lowercase字符串小写
strupr(str) string uppercase字符串大写

猜你喜欢

转载自blog.csdn.net/summer_dew/article/details/83926189