c语言基础问题
来源:互联网 发布:网络运营保密协议书 编辑:程序博客网 时间:2024/05/16 10:50
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类型的函数。
详细讲解地址http://www.cppblog.com/luliang/archive/2008/09/15/61863.html?opt=admin
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
------个人笔记 如有错误希望大家挑错,谢谢
- c语言基础问题
- C语言基础问题
- c语言基础问题汇总
- 【C语言最基础的输出问题】
- C语言中基础小问题总结
- C语言基础问题二三
- C语言基础 百钱买百鸡的问题
- C语言基础之A+B问题
- C语言基础之A+B问题
- C语言基础之scanf的问题
- C语言初始化的基础问题
- C语言基础之指针取地址问题
- 【补足基础】C语言18个经典问题答录
- C语言基础之内存分配问题(修改)
- C语言中基础小问题详细介绍
- 八皇后问题:递归解决/C语言(基础方法)
- 【C语言基础】结构体数组的易错问题
- 自己总结的一些C/C++语言基础问题
- eclipse运行hadoop wordcount example
- httpclient参数http.method.retry-handler说明
- java中equals方法和“==”的比较
- thrift的binaryprotocol协议分析
- 《Linux那些事儿之我是USB》我是U盘(9)总线、设备和驱动(下)
- c语言基础问题
- ORACLE常用性能监控SQL语句
- do...while(0)的妙用
- 公司软件团队管理规范部分
- java与javax的区别
- SL
- 统计后缀名为.cc、.c、.h的文件数
- SQL2008 修改创建数据库的默认路径
- oracle 递归查询父子关系