c语言基础问题大全,c语言基础问题

c语言中 引用头文件时“”与<>的区别

C语言编译器会用一些目录存放公共头文件;如果用<>则只在公共目录下找头文件;如果用""先在当前目录下找,如果找不到则在这些目录下找。即""的查找范围大(包括<>的查找范围),当头文件在当前目录下时""的查找速度快。

一般来说,自己定义的头文件应该用"",因为这些文件放在工程目录(也就是编译器的当前目录)下,而不是放在公共头文件目录下,如果用<>则找不到头文件。

而系统提供的头文件,比如库函数的头文件,可以用<>

用""肯定可以找到所有头文件,包括系统库函数头文件和自己定义的头文件

int 型的长度 通常为16为 -32768~32767 也有可能用32位长度

float 型的长度是32位 至少有6为有效数字

doubt 型的长度是64位

char  长度为8为

浮点型格式问题

%3.0f 字符长度占三位 小数点占0位

%6.1f 字符长度占6为,小数点长度占1位

%6f 表示字符长度6位

%.3f 表示小数点长度为3位

%d 十进制

%o 八进制

%x 十六进制

%s 字符串

%% 表%本身

%ld 输出长整形

运算效率问题

++i 效率 >i = i + 1;

指针数组 和  数组指针

int (*p)[10] 数组指针 数组里存储的是数组   p是指向数组的指针   *(p + 1) = (*p)[1]

int *p[10] 指针数组 数组里存储的是指向int型的指针   p是数组

4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?

全局变量储存在静态数据库,局部变量在堆栈。

5.int (*(*func)[5])(int *p);解析

func被一个圆括号包含,左边又有一个*,那么func是一个指针,跳出括号,右边是一个[]运算符号,说明func是一个指向数组的指针,现在往左看,左边有一个*号,说明这个数组的元素是指针,再跳出括号,右边又有一个括号,说明这个数组的元素是指向函数的指针。总结一下,就是:func是一个指向数组的指针,这个数组的元素是函数指针,这些指针指向具有int*形参,返回值为int类型的函数。

5.赋值表达式的一条规则:赋值表达式的左值不能含有限定词!

为了防止指针指向的常量被修改,C标准对于指针间赋值有一个规定,就是左值必须包含右值的所有限定词。 这就限定了一个指向const对象的指针不能赋值给指向非const对象的指针,但反过来就允许。这个规定初看上去非常合理,但其效用其实只限于一级指针,二级指针间的赋值即使满足规定也不再安全。

6.|  &^>>   <<   运算符

1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。

按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。

2. 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。

例如:9|5可写算式如下: 00001001|00000101

00001101 (十进制为13)可见9|5=13

3. 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12) 。

0^0=0, 1^0=1, 0^1=1, 1^1=0

0^0=0,0^1=1  0异或任何数=任何数

1^0=1,1^1=0  1异或任何数-任何数取反

任何数异或自己=把自己置0

(2)通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a,b的值,可通过下列语句实现:

a=10100001,b=00000110

a=a^b;   //a=10100111

b=b^a;   //b=10100001

a=a^b;   //a=00000110

------个人笔记 如有错误希望大家挑错,谢谢

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值