【数组】
具有相同数据类型的数据的集合,数组中每一个    数据被称为数组的元素,数组的元素通过数组名和下标
    进行访问
数组特点:
    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;
}

 
                         
                                

