memset,calloc的区别

简介: memset,calloc的区别

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123

输出:321

示例 2:

输入:x = -123

输出:-321

示例 3:

输入:x = 120

输出:21

示例 4:

输入:x = 0

输出:0

提示:

-231 <= x <= 231 - 1

思路一:每次得到数字的个位对应的数字不断*10+个位数再加上符号就可以得到反转的整数


注意问题:整数过大越界问题,符号问题

image.png

编译

class Solution {
    public int reverse(int x) {
        //先得到对应是正数还是负数
        int note = x>0?1:-1;
        //将数字转化成正数操作
        x = Math.abs(x);
        //这里的result和lastresule是有区别的对比防止数组越界的
        int result=0;
        int num=0;  
        int lastresult=0;
        while(x>0) {
            //得到个位的数字
            num=x%10;
            //一步步得到对应的反转值
            result=lastresult*10+num;
            //这一步是防止数字越界的,只需要与上一次的result比较是否能反推就可以得到结论如果越界返回0
             if((result-num)/10!=lastresult) {
                return 0;
            }
            lastresult=result;
            x=x/10;
        }
        //注意符号
        return result*note;
    }
}

image.png

编译

memset的作用是把ptr所指向内容中的前num个字节全部转换成val,作用在内存上一般用作初始化.

image.png

编辑

calloc的作用是把大小为size的num个在堆上的内容全部转化成0,作用在堆上一般用于初始化。

栈区存放里面的变量通常是局部变量、函数参数等,堆区存放动态分配内存的内容,静态区存放全局变量和静态变量。具体可以参考底部链接

image.png

编译

image.png

编译

相关文章
|
6月前
|
编译器 C语言
sizeof,sizeof与strlen的区别
sizeof,sizeof与strlen的区别
50 0
sizeof,sizeof与strlen的区别
|
3月前
【C初阶】内存函数:memcpy+memmove+memset+memcmp
【C初阶】内存函数:memcpy+memmove+memset+memcmp
|
5月前
|
C语言
malloc()函数
`malloc()`是C语言中的动态内存分配函数,用于分配指定大小的内存块,并返回一个`void*`类型的指针。要包含`stdlib.h`头文件来使用它。分配的内存大小以字节为单位,成功则返回内存首地址,失败则返回`NULL`。需要注意的是,返回的指针需强制转换为所需类型,并在使用后用`free()`释放内存,避免内存泄漏。切勿在分配区域内移动指针,以防止释放时出现问题。
|
6月前
|
存储 安全
内存函数(memcpy、memmove、memset、memcmp)你真的懂了吗?
内存函数(memcpy、memmove、memset、memcmp)你真的懂了吗?
206 0
内存函数(memcpy、memmove、memset、memcmp)你真的懂了吗?
|
存储 编译器 C++
C++ 中 malloc 和 new 的区别
C++ 中 malloc 和 new 的区别
131 0
|
存储 安全
有什么区别 new 和 malloc() ?
有什么区别 new 和 malloc() ?
|
存储 安全 编译器
C++中new与malloc的区别
C++中new与malloc的区别
222 0
|
人工智能 程序员 编译器