C语言学习

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;   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值