2014-02-20 3 views
-6

В чем разница между следующими двумя определениями функций?адрес оператора и оператора указателя

Объявление функции:

void fun(int* p); 

Функция Определение 1:

   void fun (int* p){ 
         p += 1; 
         } 

Функция Определение 1:

    void fun (*p){ 
         p += 1; 
          } 
+3

Помимо первого определения функции, а второе - тарабарщины? –

+0

'void fun (& p)' не является определением для 'void fun (int * p);'. Даже с 'int'. – herohuyongtao

+7

Этот вопрос не соответствует теме, потому что он просит про вещи, которых не существует (эльфы, единороги и т. Д.) –

ответ

1

пропускании int указателем:

void fun (int* p) ; 

void fun (int* p) 
{ 
    *p += 1 ; // Add 1 to the value pointed by p. 
} 

пропускании int по reference:

void fun (int& p) ; 

void fun (int& p) 
{ 
    p += 1 ; // Add 1 to p. 
} 
+0

int * p; p + = 1 также работает; он просто делает арифметику указателя – tenfour

+0

@tenfour Судя по вопросу, я предполагаю, что OP не знает, что такое арифметика указателя. – jliv902

+0

Спасибо за ваш добрый ответ. Думаю, я пропустил возвращаемый тип параметра во втором определении. –

2

Там только один действует определение функции, то первый из них вы дали :

Функция Определение 1:

void fun (int* p) { 
    p += 1; 
} 

Также вы, вероятно, имел в виду:

(*p) += 1; 
+0

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

Смежные вопросы