求助高手 C语言 符号'\0' 字符0 数字0 以及 串结束标志 空值 五者的区别
我一直对C语言中涉及到 五个 0的问题搞不清楚1.字符0 2. 数字0 3.串结束标志 4.‘\0' 5.空值
C语言中 数字0的问题
2007年全国等级考试
有以下程序
#include<stdio.h>
void fun(char *t,char *s)
{while (*t!=0) t++;
while ( (*t++=*s++)!=0);
}
main()
{char ss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);printf("%s,%s\n",ss,aa);
}
程序运行的结果是accbbxxyy,bbxxyy.
问1:在fun函数中的while循环中,*t指的是一维字符数组ss中的各个元素,
当所赋初值的字符个数少于数组的元素的个数时, 系统都将自动在其后的元素中加入 '\0’ .
因为*t所指的元素只会等于空值 \0,其ASCII代码值为0,其永远不会等于 字符0,
0和\0不是完全是两个不同的字符吗?? 所以我认为在上题中的while循环 whlie(*t!=0)中,括号内的条件永远都是恒成立的,那不就形成无限循环了么???怎么还会继续运行下去,还会有输出结果???
问2:我们老师常说字符0和数字0相差多少多少。。。这是什么意思???
a) 我看常用字符与ASCII代码的对照表中 只有一个字符0 和一个ASCII码值为0的NUL字符 。
到底字符0,数字0 ‘\0' 空值 串结束标志 这五者与 上述的两个 有对应ASCII码值的 字符0 与 NULL 有什么对应关系, 这点我一直搞不懂。。。。
请高手详细说明 , 最好有例子加以辅助 或引用资料,,谢谢