memset() объявлен как возвращаемый void*, который всегда совпадает с адресом, переданным в функцию.
Какое использование возвращаемого значения? Почему он не возвращает void?
Ответ 1
Подпись соответствует всем другим подобным функциям: memcpy(), strcpy() и т.д. Я всегда думал, что это было сделано для того, чтобы можно было связать вызовы с такими функциями и в противном случае использовать такие вызовы в выражениях.
Тем не менее, я никогда не сталкивался с ситуацией в реальном мире, где я был бы вынужден использовать возвращаемое значение таким образом.
Ответ 2
Он может использоваться для цепочки вызовов, например:
char a[200];
strcpy(memset(a, 0, 200), "bla");
Ответ 3
Чтобы использовать функцию в качестве аргумента для другой функции, такой как sprintf
Ответ 4
Я столкнулся с этим вопросом, когда Googling посмотрел, что вернулся memset.
У меня есть код, где я тестирую одно значение, тогда если это истинный тест, чтобы увидеть, является ли значение нулями.
Поскольку в C нет полностью переносного способа проверки нуля, мне нужно запустить memset в середине.