char *p = (char *)NULL; という冗長な記法のルーツを教えてください。