zoukankan      html  css  js  c++  java
  • C语言相关问题(1)

    1._tcslen(".....")和stlen(".....")的区别

    http://topic.csdn.net/u/20101115/22/4f15d24a-f77a-4298-91d5-9082a2b510d3.html

    _t开头的函数都是如此

    2.结构体对齐问题

    参考:http://www.cnblogs.com/motadou/archive/2009/01/17/1558438.html
    http://blog.csdn.net/jiangnanyouzi/archive/2009/01/16/3793864.aspx

    比如下面结构体

    struct A
    {
        double d;
        int i;
        char c;
    };
    
    struct A1
    {
        int i;
        double d;
        char c;
    };
    

    用sizeof测试出来是16和24

    3.函数传字符串

    下面三个函数均以第一个函数为准

    void fun1(char *a)
    {
    }
    
    void fun2(char a[5])
    {
    }
    
    void fun3(char a[])
    {
    }
    

    4.结构体命名规范

    4.1.tag前面加前缀_,字母全大写

    typedef struct _FILETIME {
        DWORD dwLowDateTime;
        DWORD dwHighDateTime;
    } FILETIME, *PFILETIME, *LPFILETIME;
    

    4.2用tag开头,后面接大写

    typedef struct tagPOINT
    {
        LONG  x;
        LONG  y;
    } POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;
    

    5.指针定义的字符串

    其为只读,不可改,但可以总体重复赋值,即指向了其他地方

    char *a="hello";
    char b[]="hello";
    a[0]='1';//wrong
    b[0]='1';//right
    
    char *a="hello";
    char b[]="hello";
    a="world";//right
    b[0]='1';//right
    

    6.输入输出预定义变量

    如下:__out和__in标识参数的输入与输出

    WINUSERAPI
    BOOL
    WINAPI
    SetRect(
        __out LPRECT lprc,
        __in int xLeft,
        __in int yTop,
        __in int xRight,
        __in int yBottom);
    

    还有纯粹的IN和OUT定义,作为参数提示
    #ifndef IN
    #define IN
    #endif
    
    #ifndef OUT
    #define OUT
    #endif
    

    7.指针++问题

    int main()
    {
        int a=1;
        int *pa=&a;
    
        //更改了指针地址
        pa++;
        *pa=2;
        pa++;
        *pa=3;
        pa=&a;
        //更改了指针地址
        pa++;
        int b=*pa;
        pa++;
        int c=*pa;
        //同上效果
        pa=&a;
        int b1=*++pa;//*(++pa)
        int c1=*++pa;
    
        pa=&a;
        //更改pa指向的值
        int b2=++*pa;//++(*pa)
        int c2=++*pa;
        //后缀++
        *pa=1;
        int b3=*pa++;//*(pa++)
        int c3=*pa++;
    }
    

    八.指针索引

    可以直接指针索引值

    int a=1;
    int *pa=&a;
    pa++;
    *pa=2;
    pa++;
    *pa=3;
    pa=&a;
    int i=pa[2];
    
  • 相关阅读:
    hanoi(老汉诺塔问题新思维)
    ABP文档
    ABP文档
    ABP文档
    ABP文档
    ABP文档
    ABP文档
    ABP文档
    ABP文档
    ABP框架
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2032304.html
Copyright © 2011-2022 走看看