Linux下的C语言编程(指针)

目录

1 一级指针

1.1 定义

1.2 指针的内存大小

1.3 指针的偏移

1.3.1 加法偏移

1.3.2 减法偏移

2 二级指针

2.1 定义

2.2 如何理解二级指针

3 三级指针

3.1 定义

4 数组和指针的关系

4.1 一维数组与指针的关系

4.1.1 数组名的性质

4.1.2 数组名与指针的地址偏移

4.2 二维数组与指针的关系

4.2.1 数组名的性质

4.2.2 数组名与指针的关系


一提到指针大多数人可能会头大,在学习指针之前可能都有一个疑问“指针是什么呢?”,其实说白了指针就是内存地址,而指针类型的变量就是保存内存地址的变量。常说的指针类型的变量在64位的操作系统上占8个字节(32位操作系统上占4个字节)

1 一级指针

1.1 定义

如下图所示,我们在定义一级指针的时,如果是*和int(变量类型)在一起时表示的是数据类型,即整型指针类型。*和p在一起时是运算符

 tips: 中的p表示保存的是a的地址,*p表示的是a的地址对应的值

1.2 指针的内存大小

通过实验来证明:

#include <stdio.h>

int main ()
{
	char a = 1;
	short b = 1;
	int c = 1;
	long d = 1;
	float e = 1;
	double f = 1;

	char *pchar = &a;
	short *pshort = &b;
	int *pint = &c;
	long *plong = &d;
	float *pfloat = &e;
	double *pdouble = &f;

	printf("sizeof(pchar)=%ld\n", sizeof(pchar));
	printf("sizeof(pshort)=%ld\n", sizeof(pshort));
	printf("sizeof(pint)=%ld\n", sizeof(pint));
	printf("sizeof(plong)=%ld\n", sizeof(plong));
	printf("sizeof(pfloat)=%ld\n", sizeof(pfloat));
	printf("sizeof(pdouble)=%ld\n", sizeof(pdouble));
	return 0;
}

运行结果:

通过上面的实验可知指针变量占8个字节的大小(我的是64位的操作系统)

1.3 指针的偏移

1.3.1 加法偏移

指针的偏移反映为地址的变化,加法偏移地址会向下的地址偏移,通过实验来证明:

#include <stdio.h>

int main()
{
	char a = 10;
	char *pchar = &a;

	int b = 20;
	int *pint = &b;

	printf("&pchar = %p\n", pchar);
	printf("&pchar+1 = %p\n", pchar+1);
	printf("&pchar+2 = %p\n", pchar+2);
	printf("&pchar+3 = %p\n", pchar+3);
	printf("&pchar+4 = %p\n", pchar+4);
	
	printf("&pint = %p\n", pint);
	printf("&pint+1 = %p\n", pint+1);
	printf("&pint+2 = %p\n", pint+2);
	printf("&pint+3 = %p\n", pint+3);
	printf("&pint+4 = %p\n", pint+4);
	return 0;
}

运行结果:

由实验可知,pa+1表示地址偏移1个字节,具体偏移字节的大小与指针的数据类型相关,如char类型是1个字节,而int类型是4个字节

1.3.2 减法偏移<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张小小小张sc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值