2013-12-05 5 views
-2

Я только что начал изучать указатели и как их можно передать функциям в качестве аргументов и как они могут иметь те же эффекты, что и массивы в функциях.Как вернуть указатель в функцию?

И теперь мне любопытно, как вместо этого, указатели возврата в функции, или если это возможно? Это мой вопрос. Я хотел бы знать, как вернуть общий указатель.

+2

В чем проблема? Есть ли что-то, что вы хотите знать, на что не может ответить базовый учебник? – ApproachingDarknessFish

+0

«return ... in a function» не имеет смысла, по крайней мере, не для меня. Вы хотите вернуть указатель * из * функции или присвоить возвращаемое значение вызываемой функции lvalue типа «pointer-to-something»? Или третий вариант? –

+0

Я предполагаю, что я хочу присвоить возвращаемое значение вызываемой функции указателю на что-то –

ответ

0

да можно вернуть указатель из функций.

int * FunctionReturningAnInteger() 
{ 
    // this function returns integer pointer; 
    int *integerPointer = malloc(sizeof *integerPointer); /* memory allocation */ 
    *integerPointer = 12; 
    return integerPointer; 
} 

char * FunctionReturningACharacter() 
{ 
    // this function returns integer pointer; 
    char*charPointer = malloc(sizeof *charPointer); /* memory allocation */ 
    *charPointer = 'a'; 
    return charPointer ; 
} 

надеюсь, теперь это ясно,

+0

Спасибо, я просто хотел бы узнать, как вернуть общий указатель. –

+1

@C_Intermediate_Learner общий указатель в смысле? – manish

+0

Во всяком случае, просто чтобы вы знали: я поддержал это, потому что это единственный ответ, который правильно использует 'malloc()'. –

0

прототип для возвращения указателя

int* func(); 
float* func(); 
char* func(); 

Просто определить их, что вы хотите.

+2

какой общий указатель вы говорите? можете ли вы поделиться тем, где именно вы застряли? – EmptyData

+0

Извините Vinay, это указатель, который возвращает пустоту, которую я пытался найти в –

-1
 
int i; 

/* returns a pointer to an int */ 
int *function1() 
{ 
    return &i; 
} 

char c; 

/* returns a pointer to a char */ 
char *function2() 
{ 
    return &c; 
} 

+0

Должен ли быть символ подчеркивания, или это то, что Vinay сделал хорошо? Также как это применить для общего указателя –

+2

№ Отредактировано для изменения имен функций. Любое имя функции в порядке. Что вы подразумеваете под общим указателем? – immibis

+1

@C_intermediate_learner_who_certainly_lacks_intermediate_and_even_basic_knowledge: что это за «общий» указатель, о котором вы говорите? 'void *'? Или что? –

0

Как я могу вывести из вопроса, вы пытаетесь получить учебник отсюда, который, очевидно, не представляется возможным. Вы должны попробовать сами примеры и, самое главное, вам нужно понять концепцию возврата указателя из функции.

Вы можете начать с этих вопросов ::

  1. Когда возвращается указатель из функции хорошо?
  2. Что возвращают эти указатели?
  3. Как получить возвращаемый указатель от функции?

Например, вы можете компилировать и отлаживать этот пример,

/* function to generate and retrun random numbers. */ 
int * getRandom() 
{ 
    static int r[10]; 
    int i; 

    /* set the seed */ 
    srand((unsigned)time(NULL)); 
    for (i = 0; i < 10; ++i) 
    { 
     r[i] = rand(); 
     printf("%d\n", r[i]); 
    } 

    return r; 
} 

/* main function to call above defined function */ 
int main() 
{ 
    /* a pointer to an int */ 
    int *p; 
    int i; 

    p = getRandom(); 
    for (i = 0; i < 10; i++) 
    { 
     printf("*(p + [%d]) : %d\n", i, *(p + i)); 
    } 

    return 0; 
} 
Смежные вопросы