首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建动态大小的全局数组?

如何创建动态大小的全局数组?
EN

Stack Overflow用户
提问于 2020-04-07 10:50:28
回答 1查看 35关注 0票数 0

我正在制作一个多线程程序来查找C中的素数。如何在下面的C程序中输入一个输入而不使用(#define =88)?我得到了以下错误:

main.c:8:7: error:预期声明说明符或“.”字符串常量扫描前(“%d”,&N);^~

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

#define MAX_THREADS 4

int N;
scanf("%d", &N);
int prime_arr[N]={0};

void *printprime(void *ptr)
{
    int  j,flag;
    int i=(int)(long long int)ptr;
    while(i<N)
    {
        printf("Thread id[%d] checking [%d]\n",pthread_self(),i);
        flag=0;
        for(j=2;j<=i/2;j++)
        {
            if(i%j==0)
            {
                flag=1;
                break;
            }
        }

        if(flag==0 && (i>1))
        {
            prime_arr[i]=1;
        }
        i+=MAX_THREADS;
  }
}

int main()
{
    pthread_t tid[MAX_THREADS]={{0}};
    int count=0;
    for(count=0;count<MAX_THREADS;count++)
    {
        printf("\r\n CREATING THREADS %d",count);
        pthread_create(&tid[count],NULL,printprime,(void*)count);
    }
    printf("\n");
    for(count=0;count<MAX_THREADS;count++)
    {
        pthread_join(tid[count],NULL);
    }

    int c=0;
    for(count=0;count<N;count++)
        if(prime_arr[count]==1)
            printf("%d ",count);

    return 0;
 }  
EN

回答 1

Stack Overflow用户

发布于 2020-04-07 10:55:11

不能有函数之外的一般语句。

简单的解决方案是读取main函数中的输入,然后在main函数中创建数组。

并将数组保持为函数中的局部变量,并将其作为参数传递给要调用的函数(连同其大小)。

若要将多个参数聚集到线程函数中,请创建一个以“参数”为成员的结构,并传递指向此类结构的指针。

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

https://stackoverflow.com/questions/61078323

复制
相关文章

相似问题

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