zoukankan      html  css  js  c++  java
  • C常见问题

    1.越界

    没有给一个变量申请足够大的内存,而copy大于该内存的数据

    int main()
    {
    char a;
    char *str=&a;
    strcpy(str,"hello");
    printf(str);
    return 0;
    }
    

    2.字节对齐问题

    typedef struct{
        char a;
        short b;
        int c;
    }struct_size_test1;
    
    typedef struct{
        char a;
        int b;
        short c;
    }struct_size_test2;
    
    printf("struct_size_test %d,%d",sizeof(struct_size_test1),sizeof(struct_size_test2));
    
    

    输出:struct_size_test 8,12
    因为字节对齐,最大类型是4个字节,所以struct_size_test1中char和short可以放在一块,所以是8个字节,但是struct_size_test2 中char之后是int类型,不能再放了,只能再申请一块所以是12字节

    3.野指针问题(最普遍)

    wap( int* p1,int* p2 )
    {
    int *p;
    *p = *p1;
    *p1 = *p2;
    *p2 = *p;
    }
    

    指针p初始化的时候没有明确指向NULL,只时候赋值的话可能会导致其他内存被改变,从而程序崩溃

    4.对绝对地址操作

    (unsigned int*)0x100000 = 1234;
    
    

    这是对决定地址进行赋值操作

    (void (*)())0x100000;
    *((void (*)())0x100000)();
    

    这是将决定地址强制转化为函数指针,然后执行这个函数指针

    5带参宏和带参函数的区别

    6 a++和++a的区别

    a++是先执行表达式再执行自加
    ++a是先执行自加再执行表达式

    不怕世界大,就怕格局小
  • 相关阅读:
    P1030 求先序排列 P1305 新二叉树
    spfa
    Clairewd’s message ekmp
    Cyclic Nacklace hdu3746 kmp 最小循环节
    P1233 木棍加工 dp LIS
    P1052 过河 线性dp 路径压缩
    Best Reward 拓展kmp
    Period kmp
    Substrings kmp
    Count the string kmp
  • 原文地址:https://www.cnblogs.com/wangjian1226/p/11238946.html
Copyright © 2011-2022 走看看