本帖最后由 变味的面包 于 2015-4-29 14:55 编辑
- #include <stdio.h>
- void fun(int a[4])
- {
- int i,t;
- for(i=0;i<2;i++)
- {
- t=a[i];
- a[i]=a[3-i];
- a[3-i]=t;
- }
- }
- int main()
- {
- int a[4]={4,5,6,7},i;
- printf("逆序前:\n");
- for(i=0;i<4;i++)
- printf("%3d",a[i]);
- putchar('\0');
- printf("\n逆序后:\n");
- fun(a);
- for(i=0;i<4;i++)
- printf("%3d",a[i]);
- putchar('\0');
- return 0;
- }
复制代码 上面代码是完全可行的 但是用下面的代码就不行了 小伙伴们看一下为什么?- #include<stdio.h>
- #include<string.h>
- //倒序
- void fun(int a[])
- {
- int temp;
-
- // int count = sizeof(a)/sizeof(int); 断点测试这里count = 2
- int count = strlen(a);
- for(int j=0;j<(count)/2;j++)
- {
- temp = a[(j)];
- a[(j)] = a[(count-j-1)];
- a[(count-j-1)] = temp;
- }
- }
- int main()
- {
- char a[] = {4,5,6,7,8};
-
- // 倒序前打印
- int count = strlen(a);
- for(int i=0;i<count;i++)
- {
- printf("%d ",a[i]);
- }
- printf("\n");
-
- //倒序
- fun( a );
- //倒序后打印
- for(int i = 0;i < 5;i ++)
- {
- printf("%d ",a[i]);
- }
- printf("\n");
-
- return 0;
- }
复制代码
|
|