C语言学习笔记 lesson15&16 函数2指针的偏移

指针的偏移


int main()

{

int num = 100;

int *pnum = #          

printf("%p\n", pnum);         00E2FBB4

printf("%d\n", *pnum);     取值时,根据pnum里存储的值来读取当前指定位置;找到指定位置后,根据指针类型,去读取对应数据的长度。做存储时,先找到   pnum的地址,取出pnum中的值,解引用,根据当前记录的长度,往里面写入值。

pnum++;                              增加的是指针的长度

printf("%p\n", pnum);        00E2FBB8   int 型长度增加4


char *pchar = #     

 printf("%p\n", pchar);       00E2FBB4   指向num的地址

printf("%d\n", *pchar);

printf("%c\n", *pchar);

pchar++;printf("%p\n", pchar);       00E2FBB5   char型长度增加1

double *pdouble = #

printf("%p\n", pnum);

00E2FBB4printf("%d\n", *pdouble);

printf("%c\n", *pdouble);

printf("%lf\n", *pdouble);     数据会出错,不能以%lf来解析

pdouble++;

printf("%p\n", pdouble);       00E2FBBC double型长度增加8

return 0 ;
}

注: 使用指针时,不能使用与数据类型不同的指针。以上例子只用于了访问指针内存储的值。如果进行修改,则会发生错误使用char型指向int型数据,char型的指针大小比int型的小,会修改实际数据的值。而如果使用double型指向int 型的数据,double型指针大小比int型的大,会改写实际数据之外的值。


数组也是指针的一种,数组将类型相同的数据集中在一起,数组名指向集合的首地址,通过指针偏移的方式访问数组。操作数组使用的下标,其实就是使用指针名代表的地址加上对应的下标,通过指针偏移的方式指向待访问的数据地址。来读取和改写值。


数组存储字符串:

字符串是由\0表示结尾

 char string[9]="123456789";

 printf("%s",string);   在字符串后会打印出一些乱码,程序运行到需要取字符串的时候,会从当前指定的指针地址后开始读取,一直遇到"\0"才会停止读取,没有会导致乱码。


char *pstring = "123456789";  字符串辨别长度根据"\0"来判断是否是结尾;


 char string[10]="123456789"; 将空间分配在栈中,可读可写

 char *pstring = "123456789";  编译器将字符串放在常量区 

  *(pstring+1='A' ;  会发生错误 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值