指针总结

C/C++学习笔记之六(指针总结)

前两节对指针的定义、指针与数组的关系以及指针作函数参数来访问的作用。接下来,我们将讨论一些常见的用法及错误。
(1)const指针的用法
const指针限定指针的内存操作(即只可读内存而不可写内存),并不限制对指针的加减操作。
例:
        int a=9;
        const int *p=&a;
        printf("%d",*p);//可以输出*p的值,只读,而未写;
        *p=*p+1;//错误,p指针只可读内存而不不可写内存;

const只封禁*号操作,不允许修改内存的值,但对一般的指针加减运算并不影响。
        像p=p+1;
        p=p-1;都可以,只要保证不越界就行;


``
        void print(const int *p,int length){
            for(int *a=p;a<p+length;a=a+1){
                printf("%d",*a);
        }
    }//这是可行的;

(2)如何正确的使用指针
1)弄清楚只指针指向哪里2)指向的地方是否有效3)严防数组越界
对于只定义而未赋值的指针的指针称为野指针,杜绝使用野指针;但空指针是可行的,如int *p=0,只需要加if(p)判断即可。主要应用在不想传参数时,只传递一个空指针即可。
变量失效:


#include<stdio.h>
#include<stdlib.h>
int *test(){
    int a=0;
    printf("%d",&a);
    return &a;

}
int main(){
    int *p=test();
    printf("%d",p);
    printf("%d",&a);//变量失效
    *p=11;
    printf("%d",p);
return 0;
}

“`
指针最好不要指向局部变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值