C语言-指针-为什么区分指针变量类型

1.指针变量的类型,决定了只指向空间的大小。
2.同时决定了增量

#include<stdio.h>
/*
指针变量的类型,决定了只指向空间的大小。
同时决定了增量
*/
int main()
{
	int a =0x123456;//16进制的数
	int *p=&a; 
	char *c=&a;
	printf("%x\n",*p);
	printf("%x\n",*c);
	
	printf("char类型a地址%p\n",p);
	printf("char类型a地址%p\n",c);
	
	printf("int类型a+1地址%p\n",++p);
	printf("char类型a+1地址%p\n",++c);
	/*
    可知整型指针变量+1,地址加了4
    而字符型指针+1,地址加1.
    是因为:
    一个整型数是4个字节,一个字节Byte==8bit(8位),有32位,
    一个字符数是1个字节,8位,
    
    */
	return 0;
}

 int 类型可以访问内存空间32位

char 类型只能访问内存空间8位

(*p+1)==地址+1,表示的不是地址加1,是地址向右偏移一位,但是偏移的单位由着指针变量类型决定

int 类型的指针,向右偏移一个地址,相当地址值+4,

char 类型的指针,向右偏移一个地址,相当于地址值+1。

 

地址值+1为1 byte,一个整型数是4个字节(byte),一个字符数是1个字节(byte)

 输出结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值