【发布时间】:2021-11-13 06:47:42
【问题描述】:
https://i.stack.imgur.com/7Fgkp.jpg output)这是输出图片的链接
我的代码---->
#include <stdio.h>
const int MAX = 5;
int main () {
char *names[] = {
"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
"Zara Ali"
};
int i = 0;
for ( i = 0; i < MAX; i++) {
printf("Value of *names[%d] = %c char\n", i, *names[i] );
}
for ( i = 0; i < MAX; i++) {
printf("Value of *(names+%d) = %d\n", i, *(names+i) );
}
for ( i = 0; i < MAX; i++) {
printf("Value of names[%d] = %d\n", i, names[i] );
}
for ( i = 0; i < MAX; i++) {
printf("Value of *(names+%d) = %s\n", i, *(names+i) );
}
for ( i = 0; i < MAX; i++) {
printf("Value of names[%d] = %s\n", i, names[i] );
}
printf("Value of names = %d\n",names );
printf("Value of names+1 = %d\n",names+1 );
return 0;
}
当names 和names[0] 的值不同时。
我在哪里可以正确学习这个主题。
问题是“我不知道..哪个变量存储了哪个地址或值”。
【问题讨论】:
-
请在问题中包含任何代码,避免代码或链接的图像,真的很难复制。
-
欢迎来到 stackoverflow.com。请花一些时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。也请使用tour 并阅读有关How to Ask 的好问题。最后请阅读this question checklist,并学习如何edit您的问题以改进它们。
-
顺便说一下,对于任何数组(或指针)
names和索引i,表达式*(names + i)恰好等于names[i]。此外,当使用没有索引的数组时,例如names然后它将衰减指向指向其第一个元素的指针。所以names和&names[0]是一样的。 -
@Someprogrammerdude (names and names+1) 他们的地址之间的差异是 8... 为什么不是 9. names[0] 的值 = 4196188 names[1] 的值 = 4196197 是地址吗?或者是其他东西。这里的区别是 9
-
@Sahil 你有一个指针数组。每个元素的大小(以字节为单位)为
char *的大小,即sizeof(char *)。一个指针的大小是8告诉我你在一个 64 位系统上,每个指针是 64 位或 8 个字节。