C语言中比较两个字符串是否相等,必须是他们串的长度以及他们各对应位置的字符串都相等时,才算相等。即给定两个串:s=“a1a2....an”,t="b1b2.....bm",当且仅当n=m,ai=bi时,我们认为s=t。
对于两个串不相等时,他们的大小这样定义:
给定两个串:s="a1a2...an",t="b1b2...bn",当满足一下条件之一时,s<t。
1,n<m,且ai=bi(i=1,2,3,4...n)
例如当s=“hap”,t= “happy”,就有s<t。因为t比s多了两个字母。
2,存在某个k<min(m,n),是得ai=bi(i=1,2,3...k-1),ak<bk。
例如当s=“happen” ,t=“happy”,因为前4个字母均相同,而两串第5个字母(k值),字母e的ASCII,码是101,而字母y的ASCII码是121,显然e<y,所以s<t.
串的store structure,它规定在串值后面加一个不计入串长度的结束标记付,比如"\0"来表示串值的终结。
于是对于串的顺序存储,有一些变化,串值的存储空间可在程序执行过程中动态分配而得。比如在计算机中存在一个自由存储区,叫做堆。这个堆可由C语言的动态分配函数malloc()和free()来管理