实例助记数组指针,指针和二维数组的关系

本文通过图解详细讲解了C语言中数组和指针的关系,包括如何使用指针访问数组元素、指针算术运算以及关键概念如*s1+1。实例演示了如何使用指针进行数组操作,并展示了变量地址和指针指向的深入理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图解:

 

运行结果:

欢迎使用!
已知:
int  s1[3][2] = {0,1,2,3,4,5};
int (*p)[2] = s1;
int *q = s1;
可知:
**p=0
 *p=0x7ffcc20c7120
&s1=0x7ffcc20c7120
*s1=0x7ffcc20c7120
  p=0x7ffcc20c7120
  q=0x7ffcc20c7120
 &p=0x7ffcc20c7110
 &q=0x7ffcc20c7118
 *q=0
-------up---------
*s1+1=0x7ffcc20c7124//这里s1和p同义,*s1+1 = *p+1.下文同理
*(*s1+1)=1
*(s1+1)=0x7ffcc20c7128
**(s1+1)=2
*(s1+1)+1=0x7ffcc20c712c
*(*(s1+1)+1))=3
谢谢使用!

程序代码:

#include<stdio.h>
void name1(){
	printf("欢迎使用!\n");
	printf("已知:\n");
	printf("int  s1[3][2] = {0,1,2,3,4,5};\n");
	printf("int (*p)[2] = s1;\n");
	printf("int *q = s1;\n");
	printf("可知:\n");
}
void name2(){
	printf("谢谢使用!\n");
}
int main(int argc, const char *argv[])
{
	int  s1[3][2] = {0,1,2,3,4,5};
	int (*p)[2] = s1;
	int *q = s1;
	name1();
	printf("**p=%d\n",**p);
	printf(" *p=%p\n",*p);
	printf("&s1=%p\n",&s1);
	printf("*s1=%p\n",*s1);
	printf("  p=%p\n",p);
	printf("  q=%p\n",q);
	printf(" &p=%p\n",&p);
	printf(" &q=%p\n",&q);
	printf(" *q=%d\n",*q);
	printf("-------up---------\n");
	printf("*s1+1=%p",*p+1);
	printf("//这里s1和p同义,*s1+1 = *p+1.下文同理\n");
	printf("*(*s1+1)=%d\n",*(*p+1));
	printf("*(s1+1)=%p\n",*(p+1));
	printf("**(s1+1)=%d\n",**(p+1));
	printf("*(s1+1)+1=%p\n",*(p+1)+1);
	printf("*(*(s1+1)+1))=%d\n",*(*(s1+1)+1));
	name2();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值