📄 00000006.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: <A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw.">ax.bbs@bbs.ee.nthu.edu.tw.</A> (athena), 信区: test <BR>标 题: 星星流讲座 0030 <BR>发信站: ☆清华电机☆ (Sat Jun 17 15:25:24 1995) <BR> <BR> <BR>第 5 讲 之 6 阵列与指标 <BR> Topic: Relationship between array and pointers <BR> <BR>现在请看看下列的程式: <BR> <BR>/* strcpy.c */ <BR>#include <stdio.h> <BR> <BR>void strcpy (char *s1, char *s2); <BR> <BR>void main (void) <BR>{ <BR> char a[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; <BR> char b[6]; <BR> <BR> strcpy (b, a); <BR> printf ("%s %s\n", a, b); <BR>} <BR> <BR>void strcpy (char *s1, char *s2) <BR>{ <BR> while (*s1++ = *s2++) <BR> ; <BR>} <BR> <BR>上面的程式中我们自己写了 strcpy 这个函数,而不用 string.h 中的 strcpy, <BR>这只是为了做一个示□而已,顺便让各位知道一下 string.h 中的函数是如何做 <BR>出来的。 <BR> <BR>这个程式第一个值得说明的地方是 <BR> <BR>char a[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; <BR> <BR>这是给定阵列初始值的方法之一,它的意思是把 H、e、l、l、o、\0 等六个字元 <BR>依序放进 a[] 这个阵列里。如果我写成这个样子成不成呢? <BR> <BR>char a[6]; <BR>a[] = {'H', 'e', 'l', 'l', 'o', '\0'}; <BR> <BR>答案是不成。这时候你得乖乖的写成: <BR> <BR>a[0] = 'H'; a[1] = 'e'; a[2] = 'l'; <BR>a[3] = 'l'; a[4] = 'o'; a[5] = '\0'; <BR> <BR>第二个值得说明的地方是: <BR> <BR>strcpy (b, a); <BR> <BR>奇怪在哪里呢?你有没有发现 strcpy 的原型是宣告成 <BR> <BR>void strcpy (char *s1, char *s2); <BR> <BR>它要的是两个指标,可是我们却传给他阵列?其实给定一个 <BR>阵列 a[], a 这个变数这时候就代表指向阵列第一个元素 a[0] 的指 <BR>标: <BR> <BR> ┌— a 其实就是指向 a[0] 的指标 <BR> ↓ <BR> ┌┬┬┬┬┬┬……┐ <BR> └┴┴┴┴┴┴……┘ 阵列 a[] <BR> <BR>注标 [] 其真正的意义就是引用指标。这句话有些难以理解,但是请你看看 <BR>这个式子你就能了解了: <BR> <BR> a[0] 相当於 *a 即相当於 *(a+0) <BR> a[2] 相当於 *(a+2) <BR> <BR>-- <BR>本文原作者为徐振家,原作刊载於星星神教总坛 ☆清华电机☆ test 板。 <BR>你可以以电子文件的形式将本文自由流传於台湾学术网路,但必须包含此版权声明。 <BR>原作者依中华民国著作权法之规定,享有本文之著作权,请勿抄袭以免触法。 <BR>未经授权任何人不得以任何形式对本文做任何修改及商业上之应用。 <BR>其他网路的转载或其他用途的应用,请先知会作者,并取得其同意。 <BR>对本文有任何疑问或意见请 mail 给 <A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw,谢谢。">ax.bbs@bbs.ee.nthu.edu.tw,谢谢。</A> <BR> <BR> <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -