Какая польза от возвращаемого значения memset ()?

memset() объявлено о возвращении void* это всегда то же самое значение, что и адрес, переданный в функцию.

Какая польза от возвращаемого значения? Почему не возвращается void?

87

Решение

Подпись соответствует всем другим подобным функциям: memcpy(), strcpy() и т. д. Я всегда думал, что это было сделано для того, чтобы можно было связывать вызовы с такими функциями и использовать такие вызовы в выражениях иначе

Тем не менее, я никогда не сталкивался с реальной ситуацией, когда я чувствовал бы необходимость использовать возвращаемое значение таким образом.

33

Другие решения

Может использоваться для цепочки вызовов, например:

char a[200];
strcpy(memset(a, 0, 200), "bla");
117

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

12

Я наткнулся на этот вопрос, когда гуглил, чтобы посмотреть, что вернул memset.

У меня есть некоторый код, в котором я проверяю одно значение, а затем проверяю, является ли значение нулем.

Поскольку в C нет полностью переносимого способа проверки нулей, я должен запустить memset посередине.

Итак, мой код:

if ( a==true && (memcmp(memset(zeros, 0, sizeof(zeros)), b, sizeof(zeros)) == 0) )

Это говорит о цели цепочки, указанной в предыдущих вопросах, но это пример использования этой техники.

Я оставлю это на усмотрение других, чтобы судить, хорошее ли это кодирование или нет.

0
По вопросам рекламы [email protected]