你现在是要打印两个字符串的内容,a和b是字符变量,p和q是指针变量,你输出的格式是%s是以字符串的格式输出的所以这时候你要用a和b才行(a和b是数组名),如果你想以p和q输出的话那就要在倒数第三行加上这么几句
p=a;
q=b;
for(;*p!='\0';p++)
printf("string a is :%c",*p);
for(;*q!='\0';q++)
printf("string b is :%c",*q);
p=a;
q=b
这边不是进行过赋值了么,他们都是指向同一个地址空间啊,然后他进行了这个操作
if(strlen(a)>=n) p+=n-1;
这个的意思就是说如果你需要截取的字符长度(也就是你输入的n)是小于a的长度的,那么就把p这个指针(此时和a还是指向同一区间)移动至需要开始复制的位置。
然后这个for循环就是逐个把值赋到Q中,最后结束的时候通过
*q='\0';来结束
p=a;
q=b;
都指向同一个地址空间! 一样的