首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在尝试使用指针时获取分段错误

在尝试使用指针时获取分段错误
EN

Stack Overflow用户
提问于 2022-11-16 03:20:33
回答 2查看 37关注 0票数 -3

交换两个不。通过指针的使用。

代码语言:javascript
复制
int main()
{
    int *a;
    int *b;
    a = 3;
    b = 5;
    *a=b;
    *b=a;
    printf("a=%d\n b=%d\n", *a, *b);

它在"*a=b(7)“线上显示分段故障。

我尝试引入一个新变量并将其赋值给*a和*b,但是它仍然显示相同的错误。

EN

回答 2

Stack Overflow用户

发布于 2022-11-16 05:15:32

您正在获得的编译错误看起来非常具有描述性。“从'int‘指向'int*’可以使指针不受强制转换的整数转换。”指示要将int分配给int *,这正是您在行a = 3中尝试的内容。如果a设置为int的地址,则可以使用*a = 3为其分配,也可以使用类似于int x; int *a = &x;的内容初始化a,但是编写a = 3是试图将int分配给int *,编译器警告您要注意这一点。

你可能在寻找这样的东西:

代码语言:javascript
复制
#include <stdio.h>

int
main(void)
{
    int a, b;
    int *ap = &a;
    int *bp = &b;
    a = 3;
    b = 5;
    printf("a=%d b=%d\n", a, b);
    int tmp = a;
    *ap = b;
    *bp = tmp;
    printf("a=%d b=%d\n", a, b);
}
票数 0
EN

Stack Overflow用户

发布于 2022-11-16 03:32:50

指针是指向内存地址的数据类型,因此,例如,如果您有int x = 12,可以设置int *p = x,而p是指向x的内存值的指针(其中x存储在计算机中)。您将指针设置为常量整数,这没有多大意义。另一个问题是*,当您刚接触指针时,它会让人感到困惑。*是您初始化指针的方式,您正确地使用了这些指针。*的另一个用途是取消对指针的引用。在前面的示例中,指针p指向x的内存地址。如果取消引用p,则p设置为x内存地址的值,在本例中为12。如果不想取消引用指针(将指针设置为它所指向的值),则不要使用*。如果要指向另一个指针,则必须将指针初始化为**

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74454741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档