|
1鱼币
本帖最后由 风之残月 于 2014-11-9 22:42 编辑
- #include <stdio.h>
- int main()
- {
- char a[]="I am a student.",b[20]; //定义字符数组
- int i,j;
- for (i=sizeof(a)-2,j=0;i>=0;i--,j++)
- *(b+j)=*(a+i); //将a[i]的值赋给b[j]
- *(b+j)='\0'; //在b数组的有效字符之后加'\0',做为字符串结束标志
- printf("string a is:%s\n",a);
- printf("string b is:%s\n",b);
- return 0;
- }
复制代码
不理解for (i=sizeof(a)-2,j=0;i>=0;i--,j++)这句话 |
最佳答案
查看完整内容
sizeof(a)取到a数组的长度。
单位为字节。
你可以数一数I am a student.包括空格和标点符号。一共是15个。共15个字节。然而由于char 数组你定义的时候char a[]而不是char a[15]。所以自动分配大小。默认为15+1=16(这个+1的空间用来存放字符串结尾\0)。
所以i=sizeof(a)-2=16-2=14
若你写成char a[15]这时候i=sizeof(a)-2=15-2=13(当然你这样写代码运行是会出问题的)
至于为什么-2
上面说到i=14。
i a m a s t u d e n t ...
|