【数组】

具有相同数据类型的数据的集合,数组中每一个 数据被称为数组的元素,数组的元素通过数组名和下标
进行访问
数组特点:
1.数据类型相同
2.元素与元素之间内存连续
数组的定义:
<存储类型> <数据类型> <数组名>[下标]
//定义数组时不加存储类型默认在栈区开辟空间
ex: int buf[10];
int:数据类型,buf:数组名 10:数组最大长度

数组元素访问:数组名[下标]//第一个元素下标为0
buf[5]//访问数组中第6个元素

注意 :数组名表示数组首地址
内存连续验证:
#include

int main(int argc, const char *argv[])
{
int buf[10];
int i;
printf(“%p\n”,buf);
for(i = 0;i<10;i++)
{
printf(“%p\n”,&buf[i]);
}
return 0;
}

数组的初始化:
1.完全初始化
int buf[10] = {1,2,3,4,5,6,7,8,9,10};
2.部分初始化
int buf[10] = {1,2,3,4,5};
注意:部分初始化后数组未初始化部分为0
int buf[10] = {};
3.不初始化
int buf[10];
注意:不初始化数组中每一个元素数值为随机数

#include

int main(int argc, const char *argv[])
{
// int buf[10]={1,2,3,4,5,6,7,8,9,10};
// int buf[10]= {1,2,3,4,5};
int buf[10]={};
int i;
printf(“%p\n”,buf);
for(i = 0;i<10;i++)
{
printf(“%d\n”,buf[i]);
}
return 0;
}

数组访问:通过循环,把数组中没一个元素打印出来

练习:
定义一个能存放10个整型元素得到数组,从终端给数组传十个数据,
要求,把数组中数据倒序输出
交换前:buf[10] = {1,2,3,4,5,6,7,8,9,10}
交换后:buf[10] = {10,9,8,7,6,5,4,3,2,1};

int temp;
buf[0] = 1;
buf[9] = 10;

temp = buf[0];
buf[0] = buf[9];
buf[9] = temp;

include

int main(int argc, const char *argv[])
{
int buf[10] = {};
int i,j;
for(i = 0;i<10;i++)
{
scanf(“%d”,&buf[i]);
}
//交换,到序
int temp;
for(i = 0,j=9;i {
temp = buf[i];
buf[i] = buf[j];
buf[j] = temp;
}
for(i = 0;i<10;i++)
{
printf(“%d “,buf[i]);
}
printf(“\n”);
return 0;
}

【字符数组】
字符数组:
char 数组名[下标];
初始化:
char buf[10] = {‘h’,‘e’,‘l’,’l’,’o’};
char buf[10] = {“hello”};
char buf[10] = “hello”;

从终端输入字符串
scanf(“%s”,buf);//scanf函数遇到空格停止,所以不好

gets(buf);
练习2:在终端输入一个字符串,输出该字符串中字母的个数,数
字的个数和空格的个数
#include

int main(int argc, const char *argv[])
{
char buf[128] = {};
gets(buf);
int i= 0;
int k = 0,z = 0,s = 0;
while(buf[i]!=’\0’)
{
if(buf[i]==’ ‘)
k++;
else if(buf[i]>=’a’&&buf[i]<=’z’||buf[i]>=’A’&&buf[i]<=’Z’)
z++;
else if(buf[i]>=’0’&&buf[i]<=’9’)
s++;
i++;
}
printf(“数字个数:%d\n字母个数:%d\n空格个数:%d\n”,s,z,k);
return 0;
}

buf[128] = “hello”
strlen():求字符串的长度
#include //需要加

原型:size_t strlen(const char *s);
返回值:size_t//int
参数:s:字符数组名

#include
#include

int main(int argc, const char *argv[])
{
char buf[128] = “hello”;
printf(“%d\n”,strlen(buf));
printf(“%d\n”,sizeof(buf));
return 0;
}

字符串处理函数:
1.strlen():求字符串长度
2.strcpy():字符串复制函数
char strcpy(char dest, const char *src);
参数:dest:目标数组首地址
src:原数组首地址
返回值:返回目标数组首地址
char buf1[128] = “nihaoaa”;
char buf2[128] = {};
strcpy(buf2,buf1);
printf(“%s\n”,buf2);

3.strcmp():字符串比较函数
原型: int strcmp(const char s1, const char s2);
参数:s1\s2:进行比较的两个字符串的首地址
返回值:相等返回0,返回值>0时s1大于s2,返回值<0时 ,s2
d大于s1;

任务:
自己实现strlen\strcpy、strcmp函数的功能
1.#include

int main(int argc, const char *argv[])
{
char buf[128] = {};
gets(buf);
int i=0,len = 0;
while(buf[i]!=’\0’)
{
len++;
i++;
}
printf(“%d\n”,len);
return 0;
}
1.png
2.png