---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、
<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! -----------------------
// 已知字符串
char *string = "wo shi zhong guo ren a a I am chinses";
// 存放单词的数组
char *words[100];
// i是string的下标,count记录但当前单词的长度,n是在单词数组中的已经存放了的单词
int i = 0,count = 0, n = 0;
while(1)
{
// 遇到字符串结束符\0,完成遍历,之前并检查最后一个单词是否使最长的单词
if(string[i]=='\0')
{
... ...
break;
}
// 遇到空格时,查看空格前的这个单词是否是最长单词
if(string[i]==' ')
{
... ...
for (int j=0; j<count; j++)
{
words[n][j] = string[i-count+j]; //这里会出现Thread 1:EXC_BAD_ACCESS(code=1,address=0x0)内存错误
}
// 每个单词过后,单词计数器的清零,并结束本次循环
count = 0;
i++;
continue;
} // 不是空格就将单词长度+1,并进入下次循环
count++;
i++;
}
// 进制转换,必须由要转换的数x,要转化的进制r和转化后的进制数组scale
void scaleSystem(int x,int r,int scale[SCALE])
总结这次接触指针的过程,刚开始还自信满满,以为自己学的还不错,没有想想在实用是怎么都不会啊,看样子学以致用真的不是一句空话啊。对于这次指针总结是:没有初始化的指针不能用,利用指针定义的字符串是不可以通过数组的形式修改的,也就是说它具有只读的属性。这样是可以的:
char *string = "beautiful";
printf("%c",string[0]);
// string[0] = 'q'; // 这样会出现内存错误
原因是:
C语言中,凡是以""括住的形式直接出现,而且你又没有为其分配内存空间的字符串都是常量字符串,是不能修改其值的。
char a[6]="hello";
a[2]='c';
就可以了。这里你为hello分配了一个长度为6的字符数组空间来存放。
对于返回数据是数据时,可考虑通过参数的形式来实现当中值更换。
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、
<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------