通过指针引用数组元素(通过指针引用数组元素)

:暂无数据 2026-10-15 15:40:09 :0

通过指针引用数组元素(通过指针引用数组元素)

大家好,关于通过指针引用数组元素很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于通过指针引用数组元素的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

通过指针引用数组元素

确实是4,这个实际上算得是相对地址,列数*i+j算得是这个的初始地址,得到了一个相对地址
从这个角度上是正确的,但是由于int类型每个元素要占到2个或者4个字节(视具体机器和环境而定),所以得到的实际地址&会和上面计算的有出入

C语言问题,指针引用数组int s[4][5],(*ps)[5];ps=p;则对s数组元素的正确

c是对的,p就是二维数组第0行第2列的那个元素
A ps是二维数组名,ps+1代表的是第1行的地址
B *(ps+3)= ps 是第三行,不是元素
c对的
D *(pS+1)+3 = p,所以错了

如何用结构体指针引用结构体中的数组成员

//示例如下
struct student{
char name;
char sex;
int score;
};
//定义结构体指针
struct student *stu;
//引用结构体中的成员方式如下:
stu-》name; //这是引用字符串的方式
stu-》sex;  //这是引用普通成员变量的方式
stu-》score; //这是引用数组成员中的数组元素的方式
stu-》score;
stu-》score;

初学C语言指针引用数组元素,很简单的原理没搞清,谢谢回答

首先:
4个字节
=
32
bit
=
32
位二进制位,
你说的很对。
还有,
在开始解释这个问题前,
我想先做几个规定,
方便解释:
我规定:
a
是数组的首地址,
a
=
0x00
,
a
的地址是
0
那么,
我要开始解释你的问题了。
a
+
1
中的
1
并不是
4
个字节的意思,
按道理
a
+
1
应该等于
0x01
,
因为
a
的是数组的首地址,
它的值是
0.
但是编译器知道
a
是int类型的数组的首地址,
所以他会自作主张的做出如下的转换:
(a+1)
-》
(a+1*4)
,
其中的
4
就是
int
类型的大小,
如果
int
类型是
8
个字节的话,
这个转换就是
(a+1)
-》
(a
+
1*8).
解释完了,
如果还有疑问,
欢迎追问

求c语言指针方式引用二维数组问题

就按照你举的例子来说:
a={0,1,2,3,4,5}
这时形成一个二维数组,元素是:
a
a+1
a+2
a+3
a+4
a+5
分配存储空间时,系统把每3个数据作为一组,组名记a。
所以:
a指向数组首元素的地址,a=&a;
a;
*a是对a取值,它取出的是a;
&a。
所以,第一行个打印语句输出的5个内容都是一样的,所以,输出5个19ff0c。是a(元素0)的储存位置。
第二个打印语句输出的5个内容也是相同的,都是19ff18。它们是a(元素3)的存放位置,19ff0C+3×4=19ff0c+12=19ff0c+c=19ff18。
后面也是类似解释。
具体p1、p2、p3的使用,是前面定义了三个字符串,此处拿来使用。你可以直接把p1的内容"%x,%x,%x,%x,%x\n"拿来替换掉p1,就好理解了。
有什么问题请留言。

“用指针引用数组元素”是什么意思

就是说通过指针来访问数组,例如有一个指针int *p和一个数组int a。。。。指针就是一个地址,操作起来会比数组效率高,但是这也在无形中给使用者增加了难度。

用指针引用二维数组元素

a 是数组首地址,等于 &a.
*p 声明里是指针。语句里 *p 是 指针指向的值。 语句里 p 是地址.

*p 是1个星号的指针,可以让它指向1维数组,也可以让有序地它指向2维数的各元素。
int a 数组元素排列 是:
第一行 的 第1列,第二列,第三列....
第二行 的 第1列,第二列,第三列....
第三行 的 第1列,第二列,第三列....

2维数可以看成1维数组,排成1字长蛇阵:第一行 的 第1列,第二列,第三列..;
第二行 的 第1列,第二列,第三列....;。。。。直到最后一行最后一列。
#define row 3
#define col 4
int a
int *p,i,j;
排成1字长蛇阵后,一维下标,可以用二维 下标计算: j*col + i.
某一元素: a 的 数值 就是 * (p+j*col+i);
----
写出完整程序,依次输出所有元素,对比:
#include 《stdio.h》
main()
{
#define row 3
#define col 4
int a = { 0,1,2,3,4,5,6,7,8,9,10,11};
int *p;
int i,j;
p=&a;
for (j=0;j《row;j++){
for (i=0;i《col;i++) printf("%2d ",a);
printf("\n");
}

printf("===========\n");
for (j=0;j《row;j++){
for (i=0;i《col;i++) printf("%2d ", *(p+j*col+i));
printf("\n");
}
return 0;
}
======
如果 是 int **p; 才有 *(*(p+i)+j))形式。
对应 a, 指向的值 是 *(*(p+j) + i)

怎样使用指针引用二维数组的元素

对于a(二维数组的大小为n×m)而言,
首先要搞清楚行指针和列指针
行指针:&a=&*(a+i)=a+i
列指针:a等价于*(a+i)
元素的引用方式有如下三种方式
1.通过地址引用二维元素
*(&a),
*(a+j),
*(*(a+i)+j),
*(a+m*i+j)
*(&a+m*i+j)
(*(a+i))
2.建立一个指针数组引用二维元素
int *p,i,j;
for(i=0;i《3;i++)
p为列地址
等价如下
(1) *(p+j)对应
(2)*(*(p+i)+j) 与*(*(a+i)+j)对应
(3)(*(p+i))+j)对应
(4)p对应
3.建立一个行指针引用二维数组元素
int a;
p=a;
(1) *(p+j)对应
(2)*(*(p+i)+j) 与*(*(a+i)+j)对应
(3)(*(p+i))对应
(4)p对应
例题如下
1.
#include《stdio.h》
main()
{
int score={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j;
printf("输入学生号:0-2");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(j=0;j《4;j++)
printf("%d\t",*(*(score+i)+j));//score+i为列指针,*(score+i)为行指针
printf("\n");
}
2.
#include《stdio.h》
main()
{
int a={1,3,5,7,9,11,13,15,17,19,21,23};
int *p;
for(p=a或a+i是指向行的指针
{
if((p-a)%4==0)printf("\n");
printf("%4d",*p);//输出p指向的数组元素的值
}
printf("\n");
}
3
#include《stdio.h》
main()
{
int score={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j;
printf("输入学生号:0-2");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(j=0;j《4;j++)
printf("%d\t",*(score+j));
printf("\n");
}
4
#include《stdio.h》
main()
{
int score={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j,*p;
printf("输入学生号:");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(p=score+4;p++)
printf("%d\t",*p);//p+i指向第i行,*(p+i)指向第i行0列元素*(p+i)+j指向第i行j列元素,是列地址
printf("\n");
}
5.
#include《stdio.h》
main()
{
int score={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j,*p;
printf("输入学生号:");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(p=score,j=0;j《4;j++)
printf("%d\t",*(p+j));
printf("\n");
}
6
#include《stdio.h》
main()
{
int score={{60,70,80,90},{56,89,67,88},{34,78,90,66}};
int i,j,(*p);//指针变量p指向包括4个整型元素的一维数组;
p=score;//p指向二维数组0行元素,p+1所指向的元素是p所指向元素的下一行元素;
printf("输入学生号:0-2");
scanf("%d",&i);
printf("the score of No.%d are:\n",i);
for(j=0;j《4;j++)
printf("%d\t",*(*(p+i)+j));//p+i指向第i行,p是行指针,*(p+i)指向第i行0列元素,是列指针。*(p+i)+j指向第i行j列元素,是一个元素的地址
printf("\n");
}

文章分享结束,通过指针引用数组元素和通过指针引用数组元素的答案你都知道了吗?欢迎再次光临本站哦!

通过指针引用数组元素(通过指针引用数组元素)

本文编辑:admin

更多文章:


通过指针引用数组元素(通过指针引用数组元素)

通过指针引用数组元素(通过指针引用数组元素)

大家好,关于通过指针引用数组元素很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于通过指针引用数组元素的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月15日 15:40

java历史版本下载(eclipsejavaee历史版本)

java历史版本下载(eclipsejavaee历史版本)

大家好,如果您还对java历史版本下载不太了解,没有关系,今天就由本站为大家分享java历史版本下载的知识,包括eclipsejavaee历史版本的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月15日 14:40

数字推盘游戏的技巧3 3(移动圆盘游戏技巧)

数字推盘游戏的技巧3 3(移动圆盘游戏技巧)

今天给各位分享移动圆盘游戏技巧的知识,其中也会对移动圆盘游戏技巧进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月15日 13:00

整型数组初始化为0(c语言 定义一个5*5个元素整型数组,所有元素初始化为0;从键盘输入5*5个元素到该数组,求数)

整型数组初始化为0(c语言 定义一个5*5个元素整型数组,所有元素初始化为0;从键盘输入5*5个元素到该数组,求数)

大家好,关于整型数组初始化为0很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于c语言 定义一个5*5个元素整型数组,所有元素初始化为0;从键盘输入5*5个元素到该数组,求数的知识点,相信应该可以解决大家的一些困惑和问题,如果

2026年10月15日 12:20

讲述名词英文(讲的英语是什么)

讲述名词英文(讲的英语是什么)

其实讲述名词英文的问题并不复杂,但是又很多的朋友都不太了解讲的英语是什么,因此呢,今天小编就来为大家分享讲述名词英文的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月15日 11:40

vue图片懒加载(8个非常实用的Vue自定义指令)

vue图片懒加载(8个非常实用的Vue自定义指令)

其实vue图片懒加载的问题并不复杂,但是又很多的朋友都不太了解8个非常实用的Vue自定义指令,因此呢,今天小编就来为大家分享vue图片懒加载的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月15日 10:10

require什么意思(require 有什么用法)

require什么意思(require 有什么用法)

大家好,关于require什么意思很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于require 有什么用法的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月15日 08:20

whatsthis怎么读(whatsthis怎么读)

whatsthis怎么读(whatsthis怎么读)

大家好,whatsthis怎么读相信很多的网友都不是很明白,包括whatsthis怎么读也是一样,不过没有关系,接下来就来为大家分享关于whatsthis怎么读和whatsthis怎么读的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

2026年10月15日 08:10

网关服务器的作用是什么?什么是网关,网关的作用是什么

网关服务器的作用是什么?什么是网关,网关的作用是什么

本篇文章给大家谈谈服务网关,以及网关服务器的作用是什么对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月15日 07:20

pgc全球总决赛2022赛制(pgc2022规则)

pgc全球总决赛2022赛制(pgc2022规则)

各位老铁们好,相信很多人对pgc全球总决赛2022赛制都不是特别的了解,因此呢,今天就来为大家分享下关于pgc全球总决赛2022赛制以及pgc2022规则的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 06:30

最近更新

热门文章

打印机m7400(m7400打印机清零方法)
2026-08-29 07:50:01 浏览:6
acrobat各版本区别(Acrobat XI Pro与 Acrobat PRO DC什么区别)
2026-08-29 22:30:20 浏览:2
联想y510p怎么升级(联想y510p换cpu)
2026-08-17 03:30:04 浏览:2
标签列表