关于指针的浅析---------指针基础部分2,间接访问和直接访问

指针的直接访问和间接访问:
直接访问:
    直接通过定义的变量来获取变量的数值
访问:
    通过指针的形式,指向原来变量存储的值,同样也可以进行修改
#include<stdio.h>
#include<stdlib.h>

int main(int argc,char* argv[]){
    //定义一个整形变量
    int a = 10; 
    //定义一个整形指针,指向变量a
    int *int_pointer_1 = &a; 

    //定义一个字符变量
    char b = 'c';
    char *char_pointer_2 = &b; 
    //直接访问形式,就是直接通过原来的变量名来进行访问
    printf("a = %d b = %c\n",a,b);
    //间接的访问形式,就是间接通过指针指向的变量,来间接的访问原来变量的,此处的*为指向的意思
    printf("a = %d b = %c\n",*int_pointer_1,*char_pointer_2);

    //直接访问形式
    a = 50; 
    b = 's';
    printf("a = %d b = %c\n",a,b);

    //间接的访问形式,注意:*在除了指针初始化是指针运算符,在其他的时候为指向的意思
    *int_pointer_1 = 100;
    *char_pointer_2 = 'b';
    printf("a = %d b = %c\n",*int_pointer_1,*char_pointer_2);
    printf("int_pointer_1 address = %p char_pointer_2 address = %p\n",int_pointer_1,char_pointer_2);
    return 0;
}

输出的结果为:
a = 10 b = c
a = 10 b = c
a = 50 b = s
a = 100 b = b
int_pointer_1 address = 0x7ffd56b00fdc char_pointer_2 address = 0x7ffd56b00fdb

通过直接和间接的形式都去获取或者修改原来变量的值;

指针的初始化:
int a = 10;
int *pointer = &a;//定义并且初始化
或者://定义过后,然后再进行初始化
int a = 10;
int *pointer =NULL;
pointer = &a;
NULL为空,值为0,赋值为NULL的指针为空指针,它不指向任何变量,
指针定义后不进行初始化会产生”野指针”,它指向一个不确定的区域,也指针的地址是一个随机的值,

注意:指针变量是专门用来存放地址的,不能将其他任何非地址类型的数据赋予一个指针变量,一个指针只能指向同一个类型的变量
%p  地址输出格式符 

注意一下用法:
int p = (int )0x12345678;
此处p中存储的地址有可能是一个具体的地址,同时也有可能是一个不存在的地址,因为地址是按字节来分的,没一个地址之间间隔着一个具体 数据类型的字节大小,,因此这种用法是不推荐去使用的,出错的概率相当大。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值