Меньше способов памяти

Если у меня есть следующие методы:

void addfive(int num)
{
    num = num + 5;
}

и когда я использую его в основной процедуре, например:

int a = 15;
addfive(a);

Что произойдет, так это то, что 5 будет добавлено к копии переменной (a). но если параметр метода является указателем int* num а int num 5 будет добавлен к переменной (a), и копия не будет создана.

Если бы я использовал указатель в моем методе, будет ли он использовать меньше памяти, чем первый метод, и будет ли это работать в методах non_void?

-4
09 июня '13 в 16:20
источник поделиться
3 ответов

Если вы используете указатель, он все равно будет использовать память, и обычно это будет меньше, чем память, используемая типом, но в вашем конкретном случае и в зависимости от вашей системы (ваших os и приложений) int * может использовать больше памяти, чем int, используйте sizeof для просмотра размера типа и указателя, например, используйте эту строку в 64-битной сборке приложения:

std::cout << "Size of int is: " << sizeof(int) << ", size of int* is: " << sizeof(int*) << "\n";

Но другое использование для прохождения по указателю или по ссылке - это возможность кодировать вашу функцию, чтобы оставить побочные эффекты для объекта (или типа сборки), который вы передаете в качестве параметра.

0
09 июня '13 в 16:29
источник

Фирсу +5 применяется к копии "a" и

 int a = 15;
 addfive(a);

и ваша переменная a не изменится, потому что "a" передается значением not reference, если вы хотите, чтобы funciton изменил значение a, вы должны использовать указатель или ключевое слово "ref"

если вы используете c или c++, ваш код должен быть похож на этот

addfilve(*a)
{
   *a = *a + 5;
}
int main()
{
int a = 15;
int *aptr ;
aptr = &a;

return 0;
}

но если вы используете С#

addfive(ref a)
{
  a += 5;
}

и когда вы хотите использовать эту функцию

double a = 5;
addfive(ref a); // a = 10 now

обратите внимание, что это обычный метод, а не метод extesion

Например, если вы пишете приложение формы, оно должно быть объявлено в классе Form1

0
09 июня '13 в 16:38
источник

Эта реализация определила, берет ли указатель более или менее память, чем передача целого числа. Например, в MS Visual Studio int занимает 4 байта, а указатель занимает 4 байта для 32-разрядной платформы и 8 байтов для системы x64.

Обычно sizeof(int) <= sizeof(int*).

0
09 июня '13 в 16:25
источник

Посмотрите другие вопросы по меткам или Задайте вопрос