【C语言】指针

指针,他来了他来了。

指针和指针变量
  • 定义指针变量
    类型名 *指针变量名
    例:int *p;//定义一个指向整型的指针变量
取地址运算符和取值运算符
  • 如果需要获取某个变量的地址,可以使用取地址运算符(&):
    例:int *p=&f;
  • 如果需要访问指针变量指向的数据,可以使用取值运算符(*)
    例:ptintf("%c,%d\n",*p);
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
    char a='f';
    int f=123;
    
    char *pa=&a;
    int *pb=&f;

    printf("a=%c\n",*pa);
    printf("f=%d\n",*pb);

    *pa='C';
    *pb+=1;
    printf("now,a=%c\n",*pa);
    printf("now,f=%d\n",*pb);

    system("pause");
    return 0;

}

在这里插入图片描述

野指针
  • 野指针:访问一个已销毁或者访问受限的内存区域的指针,野指针不能判断是否为NULL来避免
  • 垂悬指针:指针正常初始化,曾指向一个对象,该对象被销毁了,但是指针未制空,那么就成了悬空指针。
  • 出现原因:
    1)指针变量没有被初始化
char *p;     //野指针,p的值是随机的

正确写法应将指针变量在创建的同时应该被初始化,要么将它设置为NULL,要么让它指向合法的内存:

char *p = NULL  //#define NULL 0
char *p = (char*) malloc(100);

2)指针p被free或者delete之后,只是把指针所指的内存释放掉了,没有改变指针的值,此时,p沦落为野指针。
解决此类野指针问题,我们应该当指针指向的内存被释放时,我们也应该将指针置空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值