小编Hao*_*oyu的帖子

如何在C中检查未初始化的指针

我的CS教授给了我们这个任务.基本上我们有两个未初始化的全局指针,*min_ptr, *max_ptr.我们写这个void spray_paint( char *x, int sz, char tok, char *t )函数,它TOK的价值,并从开始记忆付诸地方xx+sz-1.char *t只是一些随机的调试目的.*min_ptr, *max_ptr用于跟踪我们打印的东西的范围.但是,我在初始化前两个指针时遇到了问题.起初,我试图检查它们是否被初始化为NULL,但是我意识到它们在C99之后默认只被初始化为NULL,而我的教授说如果没有指定你就不能假设它们被初始化为NULL,并且我们只能访问void spray_paint( char *x, int sz, char tok, char *t ),而不是代码中的任何其他地方.无论如何都要检查两个全局指针是否已初始化?或者,无论如何在第一次调用子程序时初始化它们,并且永远不再执行它?

char *min_ptr, *max_ptr;
void spray_paint( char *x, int sz, char tok, char *t )
{
char *marker = x + 3;
char *painter = x;
int k;

//if (!min_ptr || !max_ptr)
if (*marker != '~')
{
    *marker = '~';
    min_ptr = x; …
Run Code Online (Sandbox Code Playgroud)

c pointers

3
推荐指数
1
解决办法
3545
查看次数

宏定义如何影响性能?

我正在研究一个旋转二维数组的项目.当我使用宏来替换某些代码时,结果令人惊讶,因为一切都完全相同.完成任务所需的时间可能会有很大差异.我一直认为宏只是一个占位符,但这怎么可能发生呢?

struct pixel
{
    unsigned short red;
    unsigned short green;
    unsigned short blue;
} ;

//n is the # of elements in the two dimensional array
void rotate1(int n, pixel *src, pixel *dst)
{
    int row, col, max = n - 1;
    for (row = 0; row < n; row++)
        for (col = 0; col < n; col++)
            *(dst+ (((max - row)*n)+col)) = *(src+ (row*n + col));
}

void rotate11(int n, pixel *src, pixel *dst)
{
#define TARGET  *(dst + …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm macros matrix

-2
推荐指数
1
解决办法
116
查看次数

标签 统计

algorithm ×1

c ×1

c++ ×1

macros ×1

matrix ×1

pointers ×1