gpt4 book ai didi

c - C 中的指针和数组,需要更多理解

转载 作者:太空狗 更新时间:2023-10-29 16:34:34 25 4
gpt4 key购买 nike

我在 C 中做一些指针和数组练习,我注意到我的所有四种方法都返回了相同的答案。我的问题是使用以下任何一种方法是否有缺点?我对所有这四个如何给我相同的输出感到震惊。我刚刚注意到您可以像使用数组一样使用指针,也可以像使用指针一样使用数组?

char *name = "Madonah";
int i= 0;
for (i=0;i<7; i++){
printf("%c", *(name+i));
}

char name1 [7] = "Madonah";
printf("\n");
int j= 0;
for (j=0;j<7; j++){
printf("%c", name1[j]);
}

char *name2 = "Madonah";
printf("\n");
int k= 0;
for (k=0;k<7; k++){
printf("%c", name2[k]);
}

char name3 [7] = "Madonah";
printf("\n");
int m= 0;
for (m=0;m<7; m++){
printf("%c", *(name+m));
}

结果:

Madonah
Madonah
Madonah
Madonah

最佳答案

确实指针和数组是equivalent在某些情况下,“等效”意味着它们既不相同也不能互换数组不是指针
指针运算和数组索引是等价的,指针和数组是不同的

which one is preferable and the advantages/Disadvantages?

这取决于你想如何使用它们。如果你不想修改字符串,那么你可以使用

char *name = "Madonah";  

基本等同于

char const *name = "Madonah";  

*(name + i)name[i] 都是一样的。我更喜欢 name[i] 而不是 *(name + i) 因为它很简洁并且被 C 和 C++ 程序员最常使用。

如果你想修改字符串那么你可以去

char name1[] = "Madonah";

关于c - C 中的指针和数组,需要更多理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31224053/

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