C语言的指针

指针:

指针是一个变量(或是一个实参),其值为一个内存地址。每一个变量都有自己在内存中的地址,使用指针可以把该变量的地址存储在指针变量中。可以通过这种方式对变量复制,拷贝。

int * iptr;

char * cptr;

double * dptr;

 

赋值:

int a;

int v;

a= 50;

iptr = &a;    // iptr 的值是变量a的内存地址, 所以通过访问指针指向的内存地址,就可以访问变量a的值。

v = * iptr;  // 读取该指针指向地址的值,然后把值赋给左边的变量。 v的值为50

* iptr = -84;  //a 的值被改写成 “-84”, 因为指针 iptr 指向a的内存地址。这条语句其实是将该内存地址的值改写。

数组:

数组=指针,指针指向数组中第0个元素的地址,然后通过偏移得到其他元素的地址。

arr 和 &arr[0]  是等效

陷阱:

int *f1(void)
{
    int m=0;
    return &m;  //返回后,m的地址空间被释放
}

void f2(void)
{
    int *ptr = f1(); //m的地址空间被释放,ptr指向的位置没有确定值。
    *ptr = 7; // 出现漏洞
}

 

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值