【问题标题】:Getting segmentation fault while trying to use pointers尝试使用指针时出现分段错误
【发布时间】:2022-11-16 11:52:09
【问题描述】:

交换两个号码。通过使用指针。

int main()
{
    int *a;
    int *b;
    a = 3;
    b = 5;
    *a=b;
    *b=a;
    printf("a=%d\n b=%d\n", *a, *b);

// It is showing Segmentation fault at line "*a=b(7)"





// I tried to introduce a new variable and assign it to *a and *b but it still shows  the same error.

 

【问题讨论】:

  • 如果您没有看到此代码的编译错误,请在执行任何其他操作之前修复您的编译器选项。运行错误的程序完全是浪费时间
  • “从‘int’赋值给‘int*’使得指针来自整数而不进行强制转换。”这是它给出的编译错误

标签: c pointers


【解决方案1】:

指针是一种“指向”内存地址的数据类型,所以例如如果你有int x = 12,你可以设置int *p = x,而p是指向x的内存值的指针(其中x存储在计算机)。您将指针设置为常量整数,这没有多大意义。另一个问题是 *,当您不熟悉指针时,它会让人感到困惑。 * 是您如何初始化您正确使用的指针。 * 的另一个用途是取消对指针的引用。在前面的例子中,指针p指向x的内存地址。如果我们取消引用 p,那么 p 将设置为 x 的内存地址中的任何值,在本例中为 12。如果您不想取消引用指针(将指针设置为它指向),那么不要使用*。如果要将一个指针指向另一个指针,则必须将指针初始化为**

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    相关资源
    最近更新 更多