我是C语言的新手,我有一个代码,但我不理解其中的一部分。
typedef struct
{
size_t count;
char** strings;
} Tokens;
Tokens Tokenize(char* String, char Split)
{
Tokens t;
t.count = 1;
for (size_t i = 0; String[i] != 0; i++)
{
if (String[i] == Split)
t.count++;
}
t.strings =(char**) malloc(sizeof(char*)* t.count);
if (t.count > 0)
t.strings[0] = String;
for (size_t i = 0, j = 1; String[i] != 0; i++)
{
if (String[i] == Split)
{
t.strings[j] = &String[i + 1];
String[i] = 0;
j++;
i++;
}
}
return t;
}
我不了解的部分是指针char的指针如何标记字符串部分,尤其是那行t.strings [j] =&String [i + 1];
如果有人可以对过程进行可视化,我将不胜感激。谢谢
特别是那一行t.strings [j] =&String [i + 1];
在该行中,找到String[i]
了定界符char(Split
),String[i + 1]
下一个标记字符串的开头的char也是如此。该地址即炭(的&String[i + 1]
),那么,是下一个标记字符串的字符串指针/地址。
t.strings[]
只是在中找到的字符串指针的集合(数组)String
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句