引言:
string实现的函数先来实现三个,分别为strlen,strcpy与strcat。:[ ]为下标引用操作符,如arr[i],最后会转换成*(arr+i)。
注:以下所有字符函数实现均需要满足长度不能越界,否则会警告。
strlen函数:
计算字符串长度
通过指针的用法,直接对内存进行修改可以节省许多时间同时也能减少代码行数。
strcpy函数:
将第二个字符串拷贝到第一个字符串中
同样的原理,持续复制直到复制数组到达'\0'。
注:%s输出时使用的为地址,包括arr这种写法实际上使用的是首元素地址持续输出直到遇到'\0'。
strcat函数:
连接两段字符串:
指针用法例题:
这里先给出答案,再讲解原理。从上往下开始。
c中存储各字符串的首元素地址,为一级指针,其后的cp,cpp分别为储存下一级指针的地址。
一问:
第一个**++cpp,先加1再将cpp进行使用。第一个*解引用得到cp首元素,即c+2。再解引用得到字符串point。那么输出时用的则是point的首元素地址,即"point"的首元素地址,输出point。
二问:
先++,此时cpp指向c+1,解引用得到c+1。--得到c,解引用得到"enter",+3得到e的地址(因为enter本身是个字符串,一般名字代表首元素地址),输出得到er。
三问:
*cpp[-2]+3可看作**(cpp-2)+3,前两问可知cpp指向c+1,-2则指向c+3。解引用两次得到c+3的值,即"first",+3则为s的地址,输出st。
四问:
同样分解为*(*(cpp-1)-1)+1。cpp-1指向c+2,解引用得到c+2。-1得到c+1,解引用得到“new”,+1得到e的地址,输出ew。
以上四问基本就是指针方面问题的总结,掌握着四道题基本就掌握了指针的用法。