数组和指针的关系

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

注意:
        1.数组的数组名a是指向数组第一个元素的指针常量

             a == &a[0];
             a == int  
        2.数组元素的访问形式:
            a[n] == *(a+n) == *(p+n) == p[n]
        3.C语言中所有指针均可以使用[]访问空间
            指针[n] == *(指针 + n)

2.字符型数组和字符串作为函数参数

练习:封装一个函数,传入一个字符串,对字符串实现倒置

int Reverse(char *pstr){
    char *head = NULL;//设置头指针
    char *tail = NULL;//设置尾指针
    char temp = 0;

    head = pstr;//让头指针指向开头
    tail = pstr+strlen(str)-1;//让尾指针指向‘/0’前一个的字符空间
    while(head < tail){
        temp = *head;
        *head = *tail;
        *tail = temp;
        head++;
        tail++;        
    }
    return 0;
}

3.const指针

const 指针只读不能写

1.  int const *p;    和   const int *p; 是等价的

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

注意区分:

 char str[32] = {"world"};
 char  const *p = NULL;
 const char *q = "helloworld";//对                                                           *str = 'H';//对,修改了str指向的数组的一个元素,变为了“Horld”
 str = "how are you";//错,数组的数组名str是指向数组第一个元素的指针常量:,常量是不能修改的,所以这中写法是错的
 p = "helloworld";//对,p是一个指针变量,它存放的是“helloworld”这个字符串常量在内存中存放的地址
*p = 'H';//错,p存放的是“helloworld”这个字符串常量在内存中存放的地址,*p就是取“helloworld”这个字符串常量,常量是不能修改的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值