题解 | #打印从1到最大的n位数#

打印从1到最大的n位数

https://www.nowcoder.com/practice/4436c93e568c48f6b28ff436173b997f

先上自己的思路的答案

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 最大位数
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
int* printNumbers(int n, int* returnSize ) {
    
    int* pi=(int*)malloc(101000*sizeof(int));
    int* pr=pi;
    int m=9;
    for(int a=n;a>1;a--){
        m=m*10+9;
    }

*returnSize=m; 
     for(int a=1;a<=m;a++,pr++){
        *pr=a;
    }

     return pi;//这个是在栈上开辟的空间,随着函数栈帧的销毁而释放,一定要malloc
     
}

这是第一次自己写的,会出现如下错误:

因为是在函数内部创建的数组,出函数后:由于是在stack上建立的空间,出栈后会被释放。至于释放空间后是否修改空间内的数据,则取决于编译器。此处则没有释放pi指向的空间,所以后面的内容能正常打印(因为有returnSize这个参数作保证,否则这些内存就被占用但是不再能找到了,内存就被吃掉了)。

不过这样的写法任然不够干练,既然我们都求出了m,直接使用malloc开辟m个大小的空间更能体现动态内存规划的作用。

全部评论

相关推荐

过往烟沉:我说什么来着,java就业面就是广!
点赞 评论 收藏
分享
有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务