c语言指针的初步认知

1 变量的访问方式

2 指针变量的定义

3 实战

1变量的两种访问方式:1 通过变量名 2 通过 变量地址 我们举一个例子 

比如 xx花店 你要到哪里 你需要知道花店名字 或者 是 花店的地址 这样 就可以到达。

变量的两种访问方式 代码 是演示

#include<stdio.h>
void main(void)
{
   int a=10;
    printf("%d\n",a);//通过变量名访问
    printf("%d\n",*(&a));//通过地址访问  

}

#include<stdio.h> 头文件意思是 在特定的路径包含输入输出函数等

直接用a 就是 变量名 访问 或者 取变量名的地址 在* 就是把地址的值取出 这两个就是访问变量的两种方式 最后的结果是一样的。

2 指针变量含义 :一个存放地址的变量 指针 又是地址 所以简单理解 指针==地址 地址==指针

指针变量的定义

int *p;

定义一个int类型的指针变量 *是识别符 并且告诉计算机声明我是一个指针变量

指针变量的应用

#include<stdio.h>

void main(void)
{
 int a=10; //定义一个int 类型的a变量
 int *p;//定义一个指针变量  *是标识符  告诉计算机声明我是一个指针变量
  p=&a;//初始化

printf(" 通过地址访问得到的值 :%d",*p);//写法1
printf("也是通过地址访问得到的值:%d",*(&a));//和写法1 一样
printf("通过变量名得到的值 %d",a);
  

}

指针变量需要 要求类型吗  我们通过几个例子说明 

首先 我们定义一个char 类型的指针 变量 和 int类型大小的变量 用sizeof 关键字 打印出来  

看看结果怎么样 

#include<stdio.h>

void main(void)
{
    int *p=10;
    char *a=2;

     printf("int  类型的指针变量大小 %d\n",sizeof(*p));
     printf("char 类型的指针变量大小 %d",sizeof(*a));

}

   定义了一个int 类型的指针变量  就是一个指向int类型的变量  char也是这么理解 

所以在打印输出 结果是 4 和 1 

int类型是 4个字节  char 是 一个字节  

我们在通过一个方法  来 证明 指针变量 需要 要求类型的说法

通过偏移量打印 地址对比 

#include<stdio.h>

void main(void)
{
    int  *p;
    char *a;

    printf("int  无偏移  %#x\n",p);
    printf("int  有偏移  %#x\n",++p);
    printf("\n");
    printf("char 类型 无偏移  %#x\n",a);
    printf("char  类型有偏移  %#x\n",++a);
 
   

}

运行结果 

 为什么会出现这样的结果 

1 int类型是 四个字节大小   自加偏移 一位就是 四个字节

2 char 类型是 1个字节大小  自加 偏移 一位就是 一个字节 

地址偏移的问题 是不是 整块的偏移, 并不是 

首先 用 int 类型的举例子  它有四个字节大小  我们 在操作偏移 时  是在他的四个字节范围内活动的 。 换个说法 int类型 就是四个字节  偏移了一位  (++p)int 类型就变成了 8个字节 显然这是不对的  。就像 一把游标卡尺  它就这么大 你可以通过移动 偏移  到不同的地址 

总的来说 指针变量要求定义的类型      因为 它决定了 1 指向空间的大小 2 决定了偏移量 

int 类型记得是 四个字节大小  char 类型是一个字节大小 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值