【问题标题】:random numbers with pointers (C)带指针的随机数 (C)
【发布时间】:2015-02-13 19:53:21
【问题描述】:

我想在 (0 - a) 范围内创建随机数,并用指针 b 和 c 返回它们。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void random (int a, int *b, int *c)
{
    srand(time(0));
    *b = rand()%(a+1);
    *c = rand()%(a+1);
    printf("%i%i", *b, *c);
}

int main()
{
    int a = 10; // upp
    int* b;
    int* c;
    random (a, b, c);
}

代码有效,尽管我的可执行文件在 random() 之后立即崩溃。

知道为什么会崩溃吗?

【问题讨论】:

  • bc 是指针...您需要先将它们指向某些东西,然后才能取消引用它们

标签: c pointers random numbers


【解决方案1】:

您需要指针指向实际的整数。一种简单的方法是将bc 声明为int,然后传递它们的地址,如下所示:

int main()
{
    int a = 10; // upp
    int b = 0;
    int c = 0;
    random (a, &b, &c);
}

【讨论】:

  • 不完全。您仍然需要将 srand() 移出函数并将其放入它所属的 main() 中,除非您只打算调用该函数一次。
  • @LeeDanielCrocker 这是一个很好的观点。我真的只是想解决崩溃问题。下一步是让代码正常工作。
  • 你是对的,但我只需要调用一次。它必须在 random() 中,因为受保护的 main 调用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-29
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多