【发布时间】:2013-11-04 06:31:24
【问题描述】:
在指针中给了我两个全局变量。 所有我需要做的 将字符值赋给一些局部变量 检查边界。
// global variable
char *min_ptr, *max_ptr ;
void markchar( char *x, int size, char marked)
{
// for every byte of x to have the value marked
int num_arr_elem = size/sizeof(char);
for (int i=0; i<num_arr_elem; i++) {
x[i] = marked;
}
}
我分配如下: 这是正确的吗? 我现在很困惑。如何使用全局最小和最大指针检查边界? 如何将任何内容分配给未初始化的结构、联合和数组? 默认情况下它们都是空值和零?但似乎我在执行以下操作时不断收到错误。
我需要这样做,以便稍后查看堆栈的哪一部分在 max 和 min 指针之间没有分配任何值...所以我需要以某种方式检查下面的一些值是否在这些边界之间,但它们甚至没有初始化,所以如何我要检查什么吗?
这对吗?
int i ;
markchar( (char *) &i, sizeof(i), 0xa1 )
这对吗?
struct sss {
char* a ;
char b[20] ;
float c ;
} s;
markchar( (char *) &s, sizeof(s), 0xb1 )
这对吗?
union ccc {
float a ;
char b ;
int c ;
} u ;
markchar( (char *) &u, sizeof(u), 0xc1 )
这对吗?
char aa[50] ;
markchar( (char *) &aa, sizeof(aa), 0xd1 )
我将不胜感激。我现在很迷茫。花了这么多时间试图弄清楚这一点。
【问题讨论】:
-
您是否知道 C 库中有一个函数
memset,这正是您正在做的事情,在这里?而且,sizeof(char)被定义为1,所以不需要除以它。 -
你想要达到的目标也让我很困惑。
标签: c pointers struct stack unions