There are some problems thatconfuse me:
- The callee function needs return a structure, but there is not a structure statment in caller function. If i have to write the declaration in the calling function,it can not be called packaging function. 
- If i return a structure pointer by callee function, but the structure is in the stack of the called function and will be destroyed after the end, which is not safe. Sometimes i get some warning or even wrong! 
- I have a limited ideas but it not good. I put the structure into the heap by malloc and return the void*pointer. But this gave birth to a new problem :after each call to this function, in the caller, I cannot release the heap through the free() function,the complier can not identify variable name of structure pointer. I think it verey dangerous. I want when the callee function quit,it can be released by itself. 
This is the first time I came to this website to ask questions and I just came into contact with c language,If there is something stupid please point it out.
I have to write the structure declaration outside. This program for judging prime number, and I want to package the founction "judging_number". I do not want to write the structure declaration when I want to call the founction "judging_number".
Please give me some help, I would be very grateful. Sorry, this is my fault. I compiled it with clang++, I saved it as *.cpp, but I wrote c code in it.
What I mean is, can I put the declaration in the called function to realize the function modularization, how can I not declare a structure before calling the function? Is there any way I can not write a declaration. Like use founction in stdio.h.It is as convenient as using the functions of the standard library. Only need to write a line of function call and pass parameters, the called function can return multiple results.
    #include <stdio.h>
    
    
    struct boundary{
            int L;
            int R;
        };boundary *range;
    
    int *get_number()
        {
            int *nPtr = (int *)malloc(sizeof(int));
            do
            {
                printf("Please enter a vaild number for judging prime number.Or enter the number 1 to quit.\r\n");
                scanf("%d", nPtr);
                if (*nPtr == 1)
                {
                    exit(1);
                }
            } while (*nPtr < 1);
    
            printf("The object is %d\r\n", *nPtr);
    
            return nPtr;
    }
    
    int judg_number(int N,boundary range){
        if (N%range.L==0&&N!=2){
            printf("The number %d is a composite number.\r\n", N);
        }
    
        else{
            printf("The number %d is a prime number.\r\n", N);
        }
    
        return 0;
        
    }
    
    boundary* get_range(int N){
    
    
        boundary *Ptr = (boundary *)malloc(sizeof(boundary));
    
        *Ptr = {2,N-1};
    
        printf("The range is between %d and %d .\r\n", Ptr->L, Ptr->R);
    
        return Ptr;
    }
    
    
    int main(int argc,char**argv,char**env){
        int*N;
        while(1){
            N=get_number();
            range=get_range(*N);
            judg_number(*N, *range);
            free(N);
            free(range);
        }
        getchar();
        getchar();
        return 0;
    }
 
    