希望这些知识点让刚刚找工作的同仁面对技术笔试和面试的时候可以顺顺利利的通过。
1、static的作用是什么?(至少说出两点)
限制变量的作用域
设置变量的存储域(静态变量是存储在内存的全局区,就叫做静态区域)
2、全局变量和局部变量是否能同名?
能,局部屏蔽全局。
3、如果引用已经定义过的全局变量?
extern,也可以用引用头文件的方式来实现,如果引用头文件来实现引用该全局变量,
如果在代码使用改变量时,改变量的名字写错了,那在编译期间编译器会报错,如果用的是
extern来引用改变量,变量名也一样写错了,编译器期间编译器是不会报错的,而是在连接
整个工程代码文件时编译器才报错。
4、for(; 1 ; )有什么问题?是什么意思?
和while(1)一样
5、static全局变量和普通全局变量有什么不同? static局部变量和普通局部变量有什么不同?
static函数和普通函数有什么区别?
①、首先,static全局变量和普通全局变量在存储的方式上并去不同,都是存储在
静态区(全局区),只是他们的作用域不同。静态全局变量的作用域只是在定义改变量的源文件内有效。
而普通的全局变量则是对该工程所有的源文件有效。
②、从以上的总结来说,把局部变量定义成static只是改变他们的存储方式,即改变它的生存期。
③、static函数的作用域只在于当前源文件中,普通函数的作用域则是该工程的源文件。
6、请编写一份实现字符串倒序的代码。
#include
#include
#include
#define DATA_LENGTH 20
int overthrow_string()
{
char overthrow_data[DATA_LENGTH];
printf("请输入要到序的字符串:\n");
scanf("%s",overthrow_data);
puts(overthrow_data);
int str_length = strlen(overthrow_data);
int num;
char *s = overthrow_data;
char *e = overthrow_data+str_length-1;
char *d = (char *) malloc(sizeof(char));
for(num=0; num< str_length/2; num++)
{
*d = *(s+num);
*(s+num) = *(e-num);
*(e-num) = *d;
}
puts(overthrow_data);
return 0;
}
int main()
{
overthrow_string();
return 0;
}