在受控环境中使用指向整数的常量指针

时间:2014-05-23 04:50:46

标签: c pointers struct const

unsigned int H_SMPTR_LEN = 0;
#ifndef _RSZLEN
#define _RSZLEN(nvalue) H_SMPTR_LEN = nvalue;
#endif

//Smart pointer structure with built-in size
typedef struct SMPTR
{
     void *MBLOC;
     const unsigned int *length;
     unsigned int bloc_size;
} SMPTR;
#ifndef _SMPTR
#define _SMPTR(SMPTR, var_sz, v_num) SMPTR.MBLOC = malloc(var_sz * v_num); SMPTR.bloc_size = v_num * var_sz; _RSZLEN(v_num); SMPTR.length = &H_SMPTR_LEN; 
#endif

我写了这段代码来试验const *到一个整数。当我像这样运行并实现上面的代码时:

#include <stdio.h>
#include <stdlib.h>
#include "cdebug.h"

int main(int argc, char **argv)
{
    SMPTR s;
    _SMPTR(s, sizeof(char), 50);

    fprintf(stdout, "%i\n", s.bloc_size);
    fprintf(stdout, "%i\n", s.length);
    fprintf(stdout, "%i\n", H_SMPTR_LEN);
    fprintf(stdout, "%s", "Done!\n");

    return 0;
}

第二个输出语句是一个棘手的输出结果。理论上,第二个输出结果应与第三个匹配,因为SMPTR.length成员指向H_SMPTR_LEN。

第一部分代码是我的标题“cdebug.h”的一部分,它包含在main()中。我想知道我是否在这里正确使用const指针。这里的想法是创建一个结构,其成员只能在受控环境中修改,即我编写的​​方法。

0 个答案:

没有答案