&*
- пустая операция.&*str
(или как &*&*&*&*&*&*&*&*&*str
или любое число &*
) эквивалентно просто str
.См. C11 note102 .Мы можем опустить его.
char *str="INCLUDEHELP";
printf("%s", *str);
Этот код с %s
недействителен.%s
ожидает массива char
с нулем в конце.*str
- это char
со значением 'I'
, символ.Программа в Linux-подобных системах, скорее всего, получит сигнал об ошибке сегментации, потому что 'I'
будет недопустимым адресом массива символов с нулевым символом в конце.
Если это было бы:
char *str="INCLUDEHELP";
printf("%c", *str);
или:
#include<stdio.h>
int main()
{
char *str="INCLUDEHELP";
printf("%c",*&*str);
}
, тогда программа напечатает один символ I
на stdout
.