打印
[技术问答]

今天返回了一个数组指针,结果发现值不一样

[复制链接]
845|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shen_hao|  楼主 | 2017-12-21 14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shen_hao 于 2017-12-21 14:14 编辑

这是我单独把它摘出来放在devc++。大家可以运行试试,我不明白结果

#include "stdio.h"

char* load()
{
        char temp[8];
        char i = 0;
        for(i=0;i<8;i++)
        {
                temp =  0x11*i;
        }
        
        for(i=0;i<8;i++)
        {
                        printf("%x\n",temp);
        
        }
        return temp;
}

int main()
{
        char i;
    //char temp[8] =load();   //这种不行
        char * temp1 =load();
        printf("\n");
        for(i=0;i<8;i++)
        {
                //        printf("%d\n",temp1);
               printf("%x\n",*(temp1+i));
        }

        
}
沙发
xf331785508| | 2017-12-22 09:19 | 只看该作者
static  char temp[8];  

for(i=0;i<8;i++)
        {
                *(temp+i) =  0x11*i;
        }

指针没学好……另外,非静态局部变量,变量地址作为返回值是一大忌。局部变量在函数结束后,生存期已经OVER,  你再返回一块地址,这就是纯粹的野指针。

使用特权

评论回复
板凳
xinxianshi| | 2017-12-22 09:39 | 只看该作者
没法编译,不知道什么情况。。。你最好放代码框里吧,这么看费劲。

使用特权

评论回复
地板
xinxianshi| | 2017-12-22 09:39 | 只看该作者
另外要实现这个功能还可以写的更简单,干嘛非要用这种复杂的用法呢。。

使用特权

评论回复
5
天灵灵地灵灵| | 2017-12-22 22:27 | 只看该作者
楼主要实现什么功能?这些的,难易看懂啊。

使用特权

评论回复
6
heisexingqisi| | 2017-12-31 22:18 | 只看该作者
这个用法闻所未闻,也不知道你要实现什么特别功能。

使用特权

评论回复
7
heisexingqisi| | 2017-12-31 22:18 | 只看该作者
不是操作地址,最好单片机不要用指针

使用特权

评论回复
8
gejigeji521| | 2017-12-31 22:25 | 只看该作者
指针难以把握啊,我至今没有搞懂星号的位置

使用特权

评论回复
9
小明的同学| | 2017-12-31 22:44 | 只看该作者
本来数组可以用的,非要玩指针

使用特权

评论回复
10
shen_hao|  楼主 | 2018-1-3 15:31 | 只看该作者
统一回复:谢谢大家的回答,当初写这个函数是为了去大数组里取数据,每次取8个值。当时太糊涂了,应该就是野指针的问题。

再次感谢!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

230

帖子

2

粉丝