gpt4 book ai didi

c - 指针、数组、printf

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:50 24 4
gpt4 key购买 nike

我正在尝试使用一个数组来保存调查的输入,该调查在每一侧都具有相等的正值,但有一个指针指向数组的中心,因此可以使用负指针值来访问数组。

例如,数组将保存 0 到 30 之间的值,指针将指向 15,系统将提示用户输入 -15 到 15 之间的值,其中用户值所在的数组将递增。

如果我的逻辑还不完全正确,我没关系,但我现在遇到的问题是增加值(我不确定我是否正确地通过 ptr[userInput ]++,并用printf输出这些值。我看到别人发的关于将数组传递给printf的帖子实际上是传递一个指向数组的指针,并且那个人说用 **ptr(*ptr)[0] 取消引用它两次,但我的编译器 (Mac XCode) 似乎不喜欢它.

有什么想法吗?这是我的代码。我评论了我的问题所在:

#define ENDPOINT 15
#define TERMINATE 999
#define TEST_FILE "TestFile6.txt"

void RecordOpinions(void)
{
int record[2 * ENDPOINT + 1];
int *ptr = &record[ENDPOINT + 1];
int userInput;
int loopCount = -ENDPOINT;

printf("ptr:%d\n", *ptr); // this was a test for me trying to figure out how to
// print the value of the ptr.

printf("Please enter your opinion of the new TV show, Modern Family from ");
printf("-%d(worst) to 0 to +%d(best). Entering %d ", ENDPOINT, ENDPOINT, TERMINATE);
printf("will terminate and tabulate your results: \n");

scanf("%d", &userInput);
while (userInput != TERMINATE) {
if (userInput > ENDPOINT || userInput < -ENDPOINT) {
printf("Invalid entry. Enter rating again: ");
}
else {
printf("You entered: %d\n", userInput);

ptr[userInput]++; // not sure if this is the right way to increment
// the array at the user's input value.
}
scanf("%d", &userInput);
}
printf("Rating entry terminated.\n");
printf("Ratings:.\n");
for (; loopCount <= ENDPOINT; ) {
printf("%d\n", ptr[loopCount++]); // this part is where I also need help
// in trying to print out the value of
// the ptr, not the address.
}
}

最佳答案

就您在问题中提出的直接问题而言,您的代码非常好。 IE。您正在正确使用“双面”数组(不,当您printf 数组中的值时不需要任何额外的取消引用)。

我看到的一个问题是您忘记了初始化(将初始值分配给)您的record 数组,这意味着无论您如何操作,输出都将是垃圾使用它。

此外,正如 Dave Hinton 在评论中指出的那样,如果您想使用 -ENDPOINT+ENDPOINT 范围从 ptr 来源,您需要使用 &record[ENDPOINT] 初始化您的 ptr,而不是使用 &record[ENDPOINT + 1]。否则,如果用户输入 ENDPOINT 值作为索引,您最终会在右端进行越界访问。 (并且 record[0] 的值将始终在左端保持未使用状态。)

附言我会做一些“风格上”的改变,但在这种情况下它们无关紧要。

关于c - 指针、数组、printf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2163884/

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