C语言学习一个阶段的练习

本文记录了作者在学习C语言过程中的一些实践经验和感悟,包括基础语法的掌握、简单程序的设计以及遇到的问题和解决方法。通过对基础概念的巩固,逐步提升编程能力,为后续深入学习打下坚实基础。
摘要由CSDN通过智能技术生成
C语言能力测试
一、简答
1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题);写一个"标准"宏MIN函数 ,这个宏输入两个参数并返回较小的一个
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 
#define Min(a,b) ( ((a)>=(b))?(b):(a))
2.用变量a给出下面的定义
a) 一个整型数(An integer) 
int a;
b)一个指向整型数的指针( A pointer to an integer) 
int *a;
c)一个指向指针的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer )
int *(*a);
d)一个有10个整型数的数组( An array of 10 integers) 
int a[10];
e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers) 
int (*a)[10];
f) 一个指向有10个整型数组的指针( A pointer to an array of 10 integers) 
int *a[10];
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) 
int *a(int);
h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )
int *a[10](int);
3. 关键字volatile有什么含意?并给出三个不同的例子。
Volatile修饰符告诉编译程序不要对该变量所参与的操作进行优化
1)并行设备的硬件寄存器。存储器映射的硬件寄存器通常加volatile
例如状态寄存器。以为设备寄存器会在你的程序不知道或者不介入的时候发生改变,那是因为设备寄存器可以被外设硬件修改。相反,变量中的不会变。设备寄存器的内容是易失的,或者在不注意的时候被修改。当声明指向设备寄存器的指针时一定要用volatile它会告诉编译     器不要对存储在这个地址的数据进行假设,编译器在优化这个变量时应该把它看作编译时未知的。
#define IOPMOD (*((Volatile unsigned *)(SYSCFG + 0x5000)))
2)一个中断服务程序中修改的供其他程序检测的变量。
3)多线程应用中被几个任务共享的变量。

4. 结构与共用体的区别?。
1、结构体每一位成员都用来表示一种具体事务的属性,共用体成员可以表示多种属性(同一存储空间可以存储不同类型的数据)。
2、结构体总空间大小,等于各成员总长度,共用体空间等于最大成员占据的空间。
3、共用体不能赋初值而结构体可以。

5. 求下面函数的返回值(微软) 
	int func(x)
	{
	int countx = 0;
	while(x)
	{
	countx ++;
	x = x&(x-1);
	}
	return countx;
	}
8
6. 数组与指针的区别?
数组是一块数据;指针是一个指向变量
7. 移位操作为何最好使用无符号数?
使用有符号数会发生错误
8. 关键字 static的作用是什么?
static修饰函数:改变函数的作用域
static修饰变量:改变变量生命周期
9.#include<file.h> 与 #include "file.h"的区别?
头文件搜索路径不同
<>在系统头文件目录查找
“”先在当前目录查找,再到系统文件目录查找
10. 下面const的含义如何?
const int *a;
不可修改变量a
int const *a;
变量a的内容不可修改
int * const a;
变量a不可修改
int const * const a;
变量a和指向变量a的指针都不可修改
11.	什么是内存操作越界?
所谓内存越界,就是指当内存输入超出了预分配的空间大小,就会覆盖该空间之后的一段存储区域,导致系统异常
12.	什么是内存泄漏? 造成内存泄漏的原因有哪些?
内存泄露是指:内存泄漏也称作"存储渗漏",用动态存储分配函数动态开辟的空间
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值