关于strcpy和*的两个疑问

const char* symbols[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
strcpy(roman + strlen(roman), symbols[i]);
为什么定义symbols时要加指针?
strcpy这里roman+strlen(roman)是默认指针吗?为什么可以这样写?

img

const char* symbols[] 是字符指针数组,每个元素指向一个字符串。。
相当于const char symbols[10][3];

-
strcpy(roman + strlen(roman), symbols[i]);
这句是吧 symbols[i] 加到roman 后面

为什么定义symbols时要加指针?
因为symbols数组中的元素是"M"、"CM"这样子的用双引号包含的字符串,所以用char *
roman+strlen(roman),roman是字符串首地址,strlen(roman)是字符串长度,两者相加相当于是一个指向字符串结束符的指针
strcpy实现将symbols中的字符串复制到roman字符串的尾部,这样通过循环处理,实现所有symbols数组中的字符串拼接到roman字符串中