int n;char[20]=" 123456";
strcpy(ch+4, "123456");
n = strlen(ch);
为什么n的值是10?还有ch+4字符串+数字到底是什么意思?
我想你的具体代码应该是下面这个
int n;
char ch[20]=" 123456";
strcpy(ch+4, "123456");
n = strlen(ch);
- ch+4字符串+数字到底是什么意思?
ch是数组名,表示数组首元素的地址,ch+1表示数组下标为1的地址,ch+4表示数组下标为4的地址,这里有一篇初始指针应该能更好的解决这个问题。 - strcpy里有表达式 是先算表达式后覆盖吗?
是的,strcpy是一个函数,括号内的为其参数,传过去的是一个完整的值,函数接收后,才会去实现函数的功能。 - 为什么n的值是10?
首先,strcpy是一个拷贝函数,将字符串"123456"拷贝到ch+4,也就是数组下标为4的地址处,原数组的数据为" 123456",数组下标为4的值为4,将字符串拷贝到该位置,最终结果为" 123123456",共十个字符。
最后,strlen是用来计算字符串长度的,一个字符串的最后一个字符是为'/0',只要我们定义了字符串编译器会默认加上'/0',strlen在统计字符个数时不会加上'/0',所以最终结果有十个字符,具体可以看sizeof和strlen这篇博客。
有什么地方有问题可以指出。