C 如何制作指向向量的指针?我在函数中处理一个向量,我想保留这些值

C 如何制作指向向量的指针?我在函数中处理一个向量,我想保留这些值,c,pointers,vector,pointer-to-array,C,Pointers,Vector,Pointer To Array,我正在编写一个C函数,以便在调用时,该函数将返回第一个p素数的数组(向量)(p在main中由键盘给出) 我的问题是当我试图调用main中的函数时 void vector_prime(int p, int *v[ ],int *total); 这就是我的函数头的样子,下面是main的调用 vector_prime(n,&v,&tot); 现在的问题是,当我尝试给函数赋值时,v已经是向量的第一个元素的poiner,所以尝试写&v是行不通的 [错误]无法将参数“2”的“int()[

我正在编写一个C函数,以便在调用时,该函数将返回第一个p素数的数组(向量)(p在main中由键盘给出)

我的问题是当我试图调用main中的函数时

void vector_prime(int p, int *v[ ],int *total);
这就是我的函数头的样子,下面是main的调用

vector_prime(n,&v,&tot);
现在的问题是,当我尝试给函数赋值时,v已经是向量的第一个元素的poiner,所以尝试写&v是行不通的

[错误]无法将参数“2”的“int()[100]”转换为“int*” “无效向量_素数(int,int*,int)”

这里是错误

下面是完整的代码

如果你能帮助我,我将非常感激

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

int prim(int n);
void vector_prime(int p, int *v[],int *total);


int main(void){

    int n,j;
    int v[100], tot;


        puts("Introduceti un numar intreg: ");
        scanf("%d",&n);

        if(prim(n)==1) printf("Numarul %d este prim", n);
                        else printf("Numarul %d nu este prim",n);


        vector_prime(n,&v,&tot);

        for(j=0;  j<tot;   j++) printf("%d ", v[j]);

}



int prim(int n){

    int i,k=0;


    for(i=2;  i<n/2;  i++){
        if(n%i==0)  k++;
    }

    if(k==0) return 1;
        else return 0;


}
//p - primele p numere prime;     
//*v[] - pointer catre vectorul in care va stoca valorile;
///*total - pointer catre locatia la care este stocat numarul de valori prime pana la p;
void vector_prime(int p, int *v[],int *total){

    int i,j=0,d,k;

    for(i=1;   i<p;   i++){
    k=0;
        for(d=2;  d<i/2+1;  d++)

            if(i%d==0) k++;

                if(k==0) {
                    *v[j]=i; (*total)++; j++;
                }

    }
//  for(j=0;  j<*total;  j++) printf("%d  ", *v[j]);


} 
#包括
#包括
intprim(intn);
空向量_素数(int p,int*v[],int*total);
内部主(空){
int n,j;
int v[100],tot;
puts(“介绍联合国numar intreg:”);
scanf(“%d”和“&n”);
如果(prim(n)=1)printf(“Numarul%d este prim”,n);
else printf(“Numarul%d nu este prim”,n);
向量素(n,v,tot);

对于(j=0;j这是因为
vector_prime
函数的第二个参数接受一个指针数组,并向它传递一个指向数组的指针

这里不需要传递指向数组的指针,只需按原样传递数组,并相应地修改
vector_prime
函数

因此:


您应该注意,代码中也有一些未定义的行为:您没有在
main
中初始化
tot
,也没有在
vector\u prime
中初始化它。这意味着它将包含一个看似随机的值


您可能应该检查
n
是否大于
100
,或小于
0
。还应注意,您没有将
v[0]
设置为
vector_prime
函数中的值。

我还尝试将函数标题设置为以下内容:void vector_prime(int p,int**v[],int*total);并且主要使用&v,但仍然没有成功。
void vector_prime(int p, int v[], int *total);
void vector_prime(int p, int *v, int *total);
vector_prime(n, v, &tot);