RMB500求做这6道题 C语言高手在哪里

来源:百度知道 编辑:UC知道 时间:2024/06/02 01:40:01
一共有5个题 马上面试了 想搞懂 很简单的
1. 下面的宏定义存在一些问题,请给出一个更好的实现
#define MIN(a,b) (a<b?a:b)
2. 请说明下列俩条语句的异同
char*p="hello world";
char str[]="hello world";
3. 在上题中
sizeof(p)=?
sizeof(str)=?
*str=?
str[0]=?
4.假设为WINDOWS下的32位C
struct foo {
char a;
int b;
short c;
};
char str[]="abcdefghijklmn";
struct foo *foo=(sturct foo*)str;
foo->b=?
5 根据下列代码,请实现链表反转函数
struct data {
int key;
struct data *next
};
struct data *head=NULL;
struct data* reverse(struct data *head){
}
6题 请用C语言实现strlen()函数,该函数的功能是计算一个字符串的长度.

1.
#define MIN((a),(b)) ((a)<(b)?(a):(b))
2.
一是一个字符串指针,指向的静态的串,位于程序全局静态储存区域,不能改变串中内容,二是一个字符数组,数据位于栈中,可以改变内容。
3.
视环境而定,在16位机上是2,32位是4,64位是8
12
'h'
'h'
4.
0x62636465
5.
struct data* reverse(struct data *head)
{
struct data* tempNext = NULL;
struct data* current = head;
if (head == NULL) return NULL;
while (current->next != NULL)
{
tempNext = current->next;
current->next->next = current;
current = tempNext;
}
head->next = NULL;
head = current;
return head;
}
6.
int strlen(char *str)
{
int i = 0;
if (str == NULL) return 0;
while (*str++ != '\0')++i;
return i;
}
}