1. 给出标准的MIN的宏定义
2. int a = 100;
char* str = (char*)malloc(sizeof(100));
问:
变量a 是放在栈中还是堆中。
字符串str指向的分配空间是放在栈中还是堆中。
3. int ucData[100];
for(int i=0; i<100; ++i)
{
ucData[i] = i;
}
char cOut = *(char*)( (int)ucData + 1 );
cOut的值是多少?
4. 用C语言定义一个包含10个元素的数组;每一个元素都是一个有整数的参数并返回整数的函数
5. 下面的程序能否运行?如果不能,怎么改正?
void GetMemory(char* p)
{
p = (char*)malloc(sizeof(100));
}
int main(void)
{
char* str = NULL;
GetMemory(str);
strcpy(str, "hello world!");
printf("%s", str);
}
6.给出下面函数的输出:
int function1(const char* s, const char* access)
{
char* p = NULL;
char* a = NULL;
int count = 0;
for(p = s; *p != '/0'; ++p)
{
for(a = access; *a != '/0'; ++a)
if(*a == *p) break;
if *a == '/0' return count
else
++count
}
}
// 该函数的目的是找出s中连续的几个在access中的字符的长度
// 比如s为-=def, access为“=-”,返回2
char* function2(const char* s, const char* access)
{
while(*s != '/0')
{
char* a = access; // 这段代码记得不是很真切
while(*a != '/0')
{
if(*a++ == *s++) return s;
}
++s;
}
return NULL;
}
char* function3
// --- function1,function2, function3 几个函数就是从字符串中分出由分隔符隔离开的taken
// 具体的代码,请让我想想再写。
void main(void)
{
char s[] = "-abc-=def=g"
char* str1 = NULL;
str1 = functions3(s, "-");
printf("str1=%s/n", str1);
str1 = functions3(NULL, "-=");
printf("str1=%s/n", str1);
str1 = functions3(s, "=");
printf("str1=%s/n", str1);
printf("s=%s/n", s);
}
7. 给链表按照递增的顺序排序。
struct Node{
int data;
Node* next;
}
要求不允许用临时性的数组(还有一个要求,记不清楚了,不过不影响题目)。
函数的声明如下:
Node* increase_sort_list(Node* pheader);