gpt4 book ai didi

c - 将 scanf() 与指针一起使用

转载 作者:行者123 更新时间:2023-11-30 15:28:00 25 4
gpt4 key购买 nike

我正在尝试将地址作为参数传递给练习过程。它不起作用,所以我做了这个简单的例子来找出问题所在:

int main(int argc, const char * argv[]) {
int newCounter = 0; // I want to get the value of this using its address
int *address; // The pointer
printf("%p\n", &newCounter); // Printing the address
scanf("%p", address); // We insert the address manually
printf("%d\n", *address);
}

当我运行这个程序时,手动插入newCounter的地址并按Enter键后,我收到一条消息Segmentation failure: 11,有人知道出了什么问题吗这段代码?

最佳答案

scanf() 中,您必须传递一个指向要存储结果的位置的指针。你应该有这个:

scanf("%p", &address);

(注意&的使用)。您会遇到段错误,因为 scanf() 假定您传递的参数是指向可存储结果的有效内存位置的指针。

此外,scanf() 只能读取 void * 指针 - 您需要将 address 的声明更改为 无效*:

void *address; // The pointer

并注意这一点:

printf("%d\n", *address);

您如何确保您输入的地址有效?这很可能会崩溃。

关于c - 将 scanf() 与指针一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26763414/

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