1、局部变量能否和全局变量重名?
答:可以重名,作用域不同,在函数中优先使用局部变量,在C语言中没有::引用全局的说法。在函数外,局部变量无法被访问,所以没有影响。
2、如何引用一个已经定义过的全局变量?
答:EXTERN + 全局变量名
3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
答:可以
4、请写出下列代码的输出内容
#include <stdio.h> int main(void) { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; }
答: b = 10, c = 12, d = 120;
5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
答:加STATIC全局其他文件无法调用,加STATIC局部变量放在.data,函数结束但是STATIC全局变量依然存在,加STATIC函数,不能被其他文件调用。
6、程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。
局部变量 栈区
全局变量 STATIC声明变量 静态区
MALLOC申请 堆
7、设有以下说明和定义:
typedef union
{
long i; //8bits
int k[5]; //20bits
char c; //1bits
} DATE; //24bits
struct data
{
int cat; //4
DATE cow; 24//
double dog; //8
} too;
DATE max;
则语句 printf("%d",sizeof(struct data)+sizeof(max));的执行结果是
64
UNION的结构体大小算法是SIZE为可以整取所有成员SIZE,有数组的话,SIZE一定要能放下数组,但是在算除法的时候,按照变量类型大小算。STRUCT的SIZE大小算法和UNION不一样,UNION为内存共享,一时间只有一个变量在其中,而STRUCT是成员中必须都有内存,用偏移量算法。但是当在STRCT中有UNION的时候先排除UNION计算大小,后加上UNION的大小就行。
8、队列和栈有什么区别?
队列是先进先出 栈是先进后出
9、写出下列代码的输出内容
#include <stdio.h>
int inc(int a) //自增函数,传值操作,a的值不变。
{ return(++a); }
int multi(int*a,int*b,int*c)
{ return(*c=*a**b); }
typedef int(FUNC1)(int in);
typedef int(FUNC2) (int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2)
{
FUNC1 p=&inc;
int temp =p(arg1); //temp = 11;
fun(&temp,&arg1, arg2);
printf("%dn",*arg2);
}
main()
{
int a; //局部变量a为0;
show(multi,10,&a);
return 0;
}
答:110
10、请找出下面代码中的所有错误 (题目不错,值得一看)
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
#include"string.h"
main() //main函数没有声明类型 ,应该为int类型
{
char*src="hello,world";
char* dest=NULL;
int len=strlen(src)+1;
dest=(char*)malloc(len+1); //‘/0’的储存位置 //没有释放申请的内存
char* d=dest;
char* s=src[len];
while(len--!=0)
d++=s--; //没问题是,=号的运算优先级比后置自增自减高
printf("%s",dest);
return 0;
}
C语言学习
最新推荐文章于 2019-01-17 16:28:26 发布