gpt4 book ai didi

c - 为什么指针数组和数组给出相同的输出

转载 作者:太空宇宙 更新时间:2023-11-04 07:47:28 25 4
gpt4 key购买 nike

1) 如何使用指针数组访问数组元素?

通过指向数组的指针,我们可以像这样访问 (*a)[0],(*a)[22],…..像这样

对吗?

但是如何使用指针数组呢?

2)检查这三个代码,其中一个使用数组,一个使用指针数组,第三个使用双指针,但都给出相同的输出。为什么??

#include <stdio.h>
int ptr[12];
int main(void) {
if(*(ptr+5)==*(ptr+3)){
printf("Equal");
}
else{
printf("Not Equal");
}
return 0;
}

#include <stdio.h>
int *ptr[12];
int main(void) {
if(*(ptr+5)==*(ptr+3)){
printf("Equal");
}
else{
printf("Not Equal");
}
return 0;
}

#include <stdio.h>
int **ptr[12];
int main(void) {
if(*(ptr+5)==*(ptr+3)){
printf("Equal");
}
else{
printf("Not Equal");
}
return 0;
}

最佳答案

*(ptr+5) 中:

  • ptr 是一个数组的名字。
  • 当数组用于表达式中并且不是sizeof 或一元& 的操作数并且不是用于初始化数组的字符串文字时,它被转换指向其第一个元素的指针。所以 ptr 指向数组的元素 0。
  • ptr+5 添加 5,得到指向数组元素 5 的指针。
  • * 取消引用指针,生成数组元素 5 的内容。

由于数组是在任何函数之外定义的,因此它被初始化为零。因此元素 5 为零,所以 *(ptr+5) 为零。同样,*(ptr+3) 为零,因此比较它们表明它们相等。

int ptr[12];int *ptr[12];int **ptr[12]; 的示例> 只需更改数组中元素的类型。在每种情况下,*(ptr+5)*(ptr+3) 都引用数组的元素 5 和 3。在每种情况下,元素的值为零(指针类型为空指针)。

如果要查看数组不同元素之间的差异,则为数组元素分配不同的值。

关于c - 为什么指针数组和数组给出相同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55991484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com