主要的问题1 、Char a[10]
Sizeof(a) strlen(a)
各为多少
2、什么是对象
3、a=0x10
b=0x01
c= a^b<<1
答案 0x10 先左移再或
4、结构体在32位 ubuntu中的大小
struct A {
int i;
char a[5];
unsigned char b;
};
5、写出swap(x,y)函数
(x)=(x)+(y);
(y)=(x)–(y);
(x)=(x)–(y);
6、请找出下面代码中的所以错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
#include"string.h"
main()
{
char*src="hello,world";
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src[len];
while(len--!=0)
d++=s--;
printf("%s",dest);
return 0;
}
答:
方法1:
int main(){
char* src = "hello,world";
int len = strlen(src);
char* dest = (char*)malloc(len+1);//要为\0分配一个空间
char* d = dest;
char* s = &src[len-1];//指向最后一个字符
while( len-- != 0 )
*d++=*s--;
*d = 0;//尾部要加\0
printf("%s\n",dest);
free(dest);// 使用完,应当释放空间,以免造成内存汇泄露
return 0;
}
方法2:
#include
#include
main()
{
char str[]="hello,world";
int len=strlen(str);
char t;
for(int i=0; i<len/2; i++)
{
t=str[i];
str[i]=str[len-i-1]; str[len-i-1]=t;
}
printf("%s",str);
return 0;
}
7、 typedef void(fuc*)(int, int)的作用
8请问下面程序有什么错误?
int a[60][250][1000],i,j,k;
for(k=0;k<=1000;k++)
for(j=0;j<250;j++)
for(i=0;i<60;i++)
9、
const char* p
char const* p
char * const p 的用途
10、输出是什么 为什么
main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf(“%d,%d”,*(a+1),*(ptr-1));
}
请问输出:
【标准答案】2,5
11、实现函数
memcpy(void* dest, void* source, size_t count)
memmove(void *dst,const void *src,int count)
void* mymemcpy(void* dest, void* source, size_t count)
{
char *ret = (char *)dest;
char *dest_t = ret;
char *source_t = (char *)source;
while (count--){
*dest_t++ = *source_t++;
}
return ret;
}
void *my_memmove(void *dst,const void *src,int count)
{
char *ret;
char *dst_t;
char *src_t;
ret = (char *)dst;
if ((unsigned char*)dst <= (unsigned char*)src
|| (unsigned char *)dst >= ((unsigned char *)src + count))
{
dst_t = (char *)dst;
src_t = (char *)src;
while (count--)
{
*dst_t++ = *src_t++;
}
}else{
dst_t = (char *)dst + count - 1;
src_t = (char *)src + count - 1;
while (count--)
{
*dst_t-- = *src_t--;
}
}
return(ret);
}
面试感受:不好;面试难度:有难度;面试来源:网络招聘
共1个问题,0条回答
Q:1 、Char a[10]
Sizeof(a) strlen(a)
各为多少
2、什么是对象
3、a=0x10
b=0x01
c= a^b<<1
答案 0x10 先左移再或
4、结构体在32位 ubuntu中的大小
struct A
{
int i;
char a[5];
unsigned char b;
};
5、写出swap(x,y)函数
(x)=(x)+(y);
(y)=(x)–(y);
(x)=(x)–(y);
6、请找出下面代码中的所以错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
#include"string.h"
main()
{
char*src="hello,world";
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src[len];
while(len--!=0)
d++=s--;
printf("%s",dest);
return 0;
}
答:
方法1:
int main(){
char* src = "hello,world";
int len = strlen(src);
char* dest