看不懂程序里的一些语句,还请大侠教教。。。。。。
程序代码如下: #include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char *s1="Hello World!\n",*s2,*t;
puts(s1);
s2=calloc(strlen(s1)+1,sizeof(char)); /*初始化s2,使其指向一块能够容纳所复制字符串的存储空间*/
t=s2;
while(*s1!='\0')
{
*s2=*s1;
s1++;
s2++;
}
*s2='\0'; /*复制循环中未复制的字符串结束标志*/
s2=t;
puts(s2);
}
首先红字的部分:初始化s2?编译的时候报错:error C2440: '=' : cannot convert from 'void *' to 'char *'
初始化S2是否只有只有这一种方式?
而蓝色的部分,开始其实就是把刚刚初始化后的S2赋给T,后面又把T赋给给S2,那么这时S2不是空的吗?
这个程序是某个例子程序,所以没有考虑它的错误性。呵呵