作者Blueshiva (龙野南云)
看板MacDev
标题Re: [问题] 传阵列指标
时间Fri Jan 10 07:21:20 2014
要不是你抄错,就是原文就有错...XDD
※ 引述《ishuen (卢小小)》之铭言:
: 大家好,我在书上看到一段程式不太了解
: void copyString(char *to, char *from)
: {
: for ( ; *from = '\0'; ++from, ++to)
^^这应该是 != 才会动
这个徊圈做的事是,没有初始东西,等到 *from 不是 \0 的时候就停下来
然後每次都把 from 和 to 指标移动一个
: *to = *from
然後指定把 from 指到的字元复制到 to 去
: *to = '\0';
最後把 to 结尾填上 \0 作结尾
: }
: int main (int argc, char * argv[])
: {
: @autoreleasepool{
: char string1[] = "A string to be copied.";
: char string2[50];
: copyString(string2, string1);
: NSLog(@"%s",string2);
: }
: return 0;
: }
: 我想问在main里面
: 传了两个character string给copyString
: 书上说实际上是传了两个string的pointer过去
: 可是copyString的参数pointer
: 不是只能指向character string里的某个字吗?
: 像是char from = string1[0];
: 但是为什麽这两个pointer可以用来代表两个string?
要注意的是,这边是宣告了 char 阵列,不是 NSString 字串,所以整个都是 C 的
想法。string1 这个变数是个指向某个char阵列头的指标,但是你直接 *string1 的话
取到的值就是 string1[0] 的 char。配合copyString这个function,整件事情就是
把两个阵列头的指标丢进去,然後把指标每次移动1个位置,复制资料,检查是不是
到了string1的结尾(\0),是的话就把string2也结束(把\0接到尾巴)
其实这整段都是C...
--
Luna quieres ser madre
y no encuentras querer
que te haga mujer
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.125.216
1F:推 ishuen:抱歉少打字了 所以传两个阵列给function的话实际上是传两个 01/10 07:42
2F:→ ishuen:分别指向各自阵列头的指标进去的意思吗? 01/10 07:43
3F:→ Blueshiva:应该说,代表阵列的变数,本身就是个阵列中元件的指标 01/10 08:22
4F:→ Blueshiva:指到的位置是阵列中第一个元素的位置 01/10 08:23
5F:→ uranusjr:这整段唯一不是 C 的只有 @autoreleasepool XD 01/10 13:50
6F:推 ishuen:好像写错了 等到*from "是" \0的时候就停下来 01/10 15:02
7F:→ ishuen:不是\0的话就继续跑 应该是这样 01/10 15:04
8F:→ Blueshiva:for的第二个区块是true的时候就会继续,所以 *from!=\0 01/10 17:02
9F:→ Blueshiva:会在*from是\0的时候停下来没错 01/10 17:03
10F:→ ishuen:可是版主上面写"不是" 写错了XD 01/10 17:41
11F:→ Blueshiva:你原来po的时候for条件写成*from = '\0',这根本不是比 01/11 08:15
12F:→ Blueshiva:较运算,一定是错的啊,所以我後面有更正应该怎麽写才对 01/11 08:15
13F:推 ishuen:喔 是这样 我懂了 01/11 08:46