C语言学习 第十一天

1.数组和指针的关系:
    数组用来存放数据
    指针用来操作数组中的数据 

    int a[5];
    int *p = NULL;

    p = &a[0];
    p = a;

    a == &a[0];
    a == int *
    
    注意:
        1.数组的数组名a是指向数组第一个元素的指针常量 
        2.数组元素的访问形式:
            a[n] == *(a+n) == *(p+n) == p[n]
        3.C语言中所有指针均可以使用[]访问空间
            指针[n] == *(指针 + n)
    
2.一维数组作为函数参数:
    int a[5] = {1, 2, 3, 4, 5};

    int fun(int array[5]);
    int fun(int array[], int len);
    int fun(int *array, int len);           //最常使用

    练习:封装3个函数实现从终端接收5个数,对数组排序,对数组输出
        int InputArray(int *parray, int len);
        int BubbleSort(int *parray, int len);
        int OuputArray(int *parray, int len);

3.一维字符型数组和指针的关系
    数组的数组名是指向数组第一个元素的指针 

    char str[32] = {"hello world"};
    char *p = NULL;

    p = &str[0];
    p = str;

    字符串遍历操作:
        while (*p != '\0')
        {
            p++;
        }

练习:从终端接收一个字符串,统计该字符串的长度(使用指针操作)

4.字符型数组和字符串作为函数参数:
    int fun(char *pstr);

练习:从终端接收一个字符串,编写一个函数统计该字符串中大写、小写、数字和空格的个数
    int GetCount(char *pstr, int *pdaxie, int *pxiaoxie, int *pshuzi, int *pkongge);

练习:封装一个函数,传入一个字符串,对字符串实现倒置
    int Reverse(char *pstr);

练习:封装一个函数,传入一个字符串,将其拷贝到另一个空间中 
    int MyStrcpy(char *pdst, char *psrc);    


4.const指针:
    const == readonly    只读(只能读不能改)

    1.int const *p;
    2.const int *p;
    3.int *const p;
    4.const int *const p;
    5.int const *const p;

    1和2是等价的
    const修饰*p, 指针变量p可以修改指向的空间,但不能利用该指针修改指向空间中的值
    主要用于:
        1.字符串在函数中传参时,只想让函数体内使用字符串,而不允许通过指针改变字符串的值使用const
        2.定义指向字符串常量的指针,最好加const 
           const char *p = "hello world";

    3
    const修饰p, 指针变量p的值不能变, 但可以利用指针修改指向空间中的值, 一定要对指针初始化
    主要用于:
        数组的数组名是永远指向数组第一个元素的指针

    4和5是等价的
    const修饰p和*p, 指针变量p的值不能变,也不能利用*p改变指向空间中的值, 一定要对指针初始化

 

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值