我的CS教授给了我们这个任务.基本上我们有两个未初始化的全局指针,*min_ptr, *max_ptr.我们写这个void spray_paint( char *x, int sz, char tok, char *t )函数,它TOK的价值,并从开始记忆付诸地方x来x+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) 我正在研究一个旋转二维数组的项目.当我使用宏来替换某些代码时,结果令人惊讶,因为一切都完全相同.完成任务所需的时间可能会有很大差异.我一直认为宏只是一个占位符,但这怎么可能发生呢?
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)