鱼C论坛

 找回密码
 立即注册
查看: 3220|回复: 4

求助。。。。。。。。。。。。

[复制链接]
发表于 2012-8-6 09:38:32 | 显示全部楼层 |阅读模式
2鱼币
#include <stdio.h>
void main()
{
        int *swap(int *p, int n);
        int a[] = {1, 3, 4, 5, 6, 7, 8, 9};
        int n, *pt, i;

        printf("Please input a  number: ");
        scanf("%d", &n);

        pt = swap(a, n);
        
        for(i = 0; i <= 4; i++)
        {
                printf("%d\n", *(pt+i));
        }
}

int *swap(int *p, int n)
{
        int i, j, k, b[9];

        for(i=0; i <= 7; i++)
        {
                j = i+1;

                if(n > *(p+i) && n < *(p+j))
                {
                        b[i] = *(p+i); i++; break;
                }
                else
                {
                        b[i] = *(p+i);
                }
        }
        b = n;
        for(k = i+1; k <= 8; k++)
        {
                b[k] = *(p+k-1);
        }

        return b;
}
为什么能返回 b 数组 的地址,却不能打印出来。小甲鱼的视频里的一道题。求的是输入一个数,然后按顺序插入A 数组中。。
[/i][/i]

有人说是b 数组是局部变量,但是我把它当地址返回了,不是也可以吗。

最佳答案

查看完整内容

刚才那个错了,从新来。 b = *(p+i); 错了应该为b=*(p+i); b = n;应该为b=n; b数组是局部变量,返回后会被销毁。原来的数据不在存在,打印出来就不是原来的了。解决方法是在swap函数内打印。或在main函数内声明b数组
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-6 09:38:33 | 显示全部楼层
刚才那个错了,从新来。
b = *(p+i); 错了应该为b[i]=*(p+i);
b = n;应该为b[i]=n;
b数组是局部变量,返回后会被销毁。原来的数据不在存在,打印出来就不是原来的了。解决方法是在swap函数内打印。或在main函数内声明b数组
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-6 09:54:40 | 显示全部楼层
我试了编译不过,有错误。你确定编译通过?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-6 11:17:08 | 显示全部楼层
本帖最后由 万骨空 于 2012-8-6 11:19 编辑

同学,b = *(p+i); 错了应该为b[i][i]=*(p+i);
b = n;应该为b[i][i][i][i]=n;
b数组是局部变量,返回后会被销毁。原来的数据不在存在,打印出来就不是原来的了。解决方法是在swap函数内打印。或在main函数内声明b数组
[/i][/i][/i][/i]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-8-6 14:06:55 | 显示全部楼层

哟西。。。你滴大大滴良民
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 12:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表