前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言指针(2)

C语言指针(2)

作者头像
zxctscl
发布2024-01-22 21:55:57
1200
发布2024-01-22 21:55:57
举报
文章被收录于专栏:zxctscl个人专栏

1. 指针±整数

数组在内存中是连续存储的,只要知道第一个元素的地址,后面的元素依次就能找到。

代码语言:javascript
复制
int arr[]={1,2,3,4,5};

而所对应的下标为0,1,2,3,4。

在对不同类型指针变量加减时结果不同, 举个例子:

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int n = 10;
	int* p1 = &n;
	char* p2 = &n;
	

	printf("p1=%p\n", p1);
	printf("p1+1=%p\n", p1+1);

	printf("p2=%p\n", p2);
	printf("p2+1=%p\n", p2+1);
	
	return 0;
}

在下面为结果 int类型的就跳过了4个字节, char类型就跳过1个字节

指针+-
指针+-

结论: 指针的类型决定了,指针加减整数时,一次性跳过多少个字节。

2. 指针-指针

在指针变量相同类型时,计算出的是中间间隔的个数。 举个例子:

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int arr[10] = { 0 };
	int* p1 = &arr[9];
	int* p2 = &arr[0];
	int ret = p1-p2 ;
	printf("%d\n", ret);
	return 0;
}

结果为

间隔9
间隔9

指针类型不同时不能进行指针的加减运算。

3. 指针的运算关系

计算数组的元素个数时,我们使用了sizeof(数组名),而sizeof中单独放数组名,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。 sizeof(arr[0])计算的是首元素的大小,单位也是字节。

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	printf("%d\n", sz);
	return 0;
}
数组大小
数组大小

数组名就是数组首元素(第一个元素)的地址是对的,但是有两个例外: 1.sizeof(数组名),sizeof中单独放数组名,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。 2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址。 除此之外,任何地方使用数组名,数组名都表示首元素的地址。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 指针±整数
  • 2. 指针-指针
  • 3. 指针的运算关系
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档