030 指针学习—指针定义与指针变量

目录

1 指针定义

(1)指针

(2)存储单元的地址和存储单元的内容

(3)指针访问形式

(4)注意事项

2 指针变量

(1)定义

(2)一般形式

(3)引用指针

(4)函数参数——指针

(5)注意事项


1 指针定义

(1)指针

        指针是一个变量,其值为另一个变量的地址。通过指针,你可以直接访问和操作存储在内存中的数据。

        地址形象化地称为“指针”。意思是通过它能找到以它为地址的内存单元(如同根据地址2000就能找到变量i的存储单元一样)。

(2)存储单元的地址和存储单元的内容

        程序已定义 了3个整型变量i,j,k,在程序编译时,系统分配地址6422044~6422047为的4个字节给变量 i,6422040~6422043的4个字节给j,6422036~6422039的4个字节给 k

#include<stdio.h>
int main()
{
    int i=1,j=2,k=4;
    
    printf("i=%d,j=%d,k=%d\n",i,j,k);
    printf("i的存储起始地址 %d, j的存储起始地址 %d, k的存储起始地址 %d\n",&i,&j,&k);
 
    return 0;
}


/** 输出结果**/
i=1,j=2,k=4
i的存储起始地址 6422044, j的存储起始地址 6422040, k的存储起始地址 6422036

//i,j,k的存储内容分别为1,2,4

(3)指针访问形式

  • 直接访问:直接按变量名进行的访问,称直接访问
#include<stdio.h>
int main()
{
    int i=1;
    printf("i=%d\n",i);
    printf("i的起始地址: %d\n",&i);  //直接访问i的地址
 
    return 0;
}


/**输出结果**/
i=1
i的起始地址: 6422044
  • 间接访问:,即将变量i的地址存放在另一变量中,然后 通过该变量来找到变量i的地址,从而访问i变量
#include<stdio.h>
int main()
{
    int i=1,i_point;
    i_point=&i;
    printf("i=%d\n",i);

    printf("i的起始地址: %d\n",&i);               //直接访问i的地址
    printf("i_point的起始地址: %d\n",i_point);  //通过i_point间接访问i的地址

 
    return 0;
}


/**输出结果**/
i=1
i的起始地址: 6422040
i_point的起始地址: 6422040

(4)注意事项

①  在C语言中,数据是分类型的, 对不同类型的数据,在内存中分配的存储单元大小(字节数)和存储方式是不同的(如整数以 补码形式存放,实数以指数形式存放

② 为了有效地存取一个数据,除了需要位置信息外,还需要有该数据的类型信息(如果没有该数据的类型信息,只有位置信息是无法对该数据进行存取的)。

③ C语言中的地址包括位置信息(内存编号,或称纯地址)和它所指向的数据的类型信息,或者说它是“带类型的地址”。

#include<stdio.h>
int main()
{
    int a=100;
    printf("a = %d\n",a);
    printf("a的地址: %d\n",&a);   //&a表示a的地址
 
 
    return 0;
}


/**输出结果**/
a = 100
a的地址: 6422044
//a的数据类型为int,地址为6422044,地址所存储的值为100

④ 若有int型变量a和float型变量b,如果先后把它们分配在2000开始的存储 单元中,&a和&.b的信息完全相同吗?

                答:是不相同的,虽然存储单元的编号相同,但它 们的数据类型不同。

⑤ 对变量的访问都是通过

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青配时代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值