Нет разницы. И *
всегда относится только к a
.
Пример:
int *a= nullptr, b=12; // a is a pointer, b is a plain int
int* a= nullptr, b=12; // still a is a pointer and b an int,
// despite misleading impression conveyed
Если Вы используете многопоточный версия CRT, все функции ориентированы на многопотоковое исполнение, потому что любая определенная для потока информация хранится в TLS. rand_s на самом деле не использует информацию состояния во-первых, так как это просто называет API ОС, таким образом, вопрос потокобезопасности не возникает для rand_s. рэнд (), однако зависит от значения семени для генерации случайного числа.
Chris сказал: rand()
не ориентировано на многопотоковое исполнение, потому что его внутреннее состояние статично, но rand_s()
должно быть ориентировано на многопотоковое исполнение, как бы то ни было.
Jeff добавил однако, что с многопоточной версией MSVCRT, rand()
состояние сохранено в локальной памяти потока, таким образом, хорошо тихо.
Visual Studio идет с источником к библиотеке времени выполнения. В то время как часть его может быть довольно болезненной для прохождения через, rand_s () довольно просто.
Весь rand_s () делает назвать SystemFunction036 () в ADVAPI32.DLL для получения случайного значения. Что-либо в ADVAPI32.DLL должно быть ориентировано на многопотоковое исполнение.
Со своей стороны, rand_s () получает указатель на ту функцию ориентированным на многопотоковое исполнение способом.
Я не могу думать ни о какой причине, почему rand_s () или даже рэнд () не был бы ориентирован на многопотоковое исполнение.
Я не знаю, ориентирован ли rand_s на многопотоковое исполнение, но кажется, что это, вероятно, так как это, кажется, делает распространение в прямом и обратном направлениях к ОС для энтропии. (как долго, поскольку Вы связываетесь с VC ++ CRT мультипотока, все ставки выключены при соединении с единственным потоком одного)
, Если он поддерживается окнами CRT, можно попробовать вызов к rand_r, который является posix повторно используемой версией рэнда. ИЛИ еще лучшее повышение:: случайный, если Вы уже используете повышение.
рассмотрение, как распространяющаяся многопоточность скоро будет, никто не должен использовать рэнд () больше в новом коде - всегда пытаются использовать rand_r/rand_s/boost/various зависимые от платформы безопасные рэнды/и т.д.