C语言的整理
第一次学着写博客,没什么经验,看官图一乐好了~~~~
基础的定义
%d 十进制有符号整数
%u 十进制无符号整数
%lf 双精度浮点数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
char <short <int <long (除char(8比特)外c未直接定义大小最小范围)
Signed char -127—127 unsigned char 0—255 8bit
Signed short-32767—32767 unsigned short 0—65535 16bit
Signed int-32767—32767 unsigned char 0—65535 16bit
Signed long -2147483647—2147483647 unsigned long 0—4094967295 32bit
之前群友讨论说一道关于 这个的 面试题 我的回答是除了char8个比特以外无明确定义,但似乎不是正确答案啊!!!
大小印第安序
Big endian低位 放 高地址 PPC 68K
litter endian高位 放 高地址 arm X86 ARM11
记得初学时的记不清的问题
double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,
不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)
指针
根据我现在对C的理解,我认为一切的都是内存;(挺云里雾里的一句话,也说不清,索性听听就行了)
对于基础的指针和count结合总结一下:
count加谁身上谁不变
/*基本指针*/
void zhizhen()
{
int ab = 1; int* ef = &ab;
int a = 111; int* aa = &a;
//允许地址转变
//允许值改变
aa = ef;
*aa = ab;
cout << "*aa= "<<*aa << " aa=" << aa << endl;
cout << "*ef= " << *ef << " ef=" << ef << endl;
cout << endl;
const int b = 222; const int* bb = &b;
//允许地址转变
//不允许值改变
bb = ef;
//*bb = ab;
cout << "*bb= " << *bb << " bb=" << aa << endl;
cout << "*ef= " << *ef << " ef=" << ef << endl;
cout << endl;
int c = 333; int* const cc = &c;
//不允许地址转变
//允许值改变
*cc = ab;
//cc = ef;
cout << "*cc= " << *cc << " cc=" << cc << endl;
cout << "*ef= " << *ef << " ef=" << ef << endl;
cout << endl;
int d = 444;const int* const dd = &d;
//不允许地址转变
//不允许值改变
// *dd = ab;
// dd = ef;
cout << "*dd= " << *dd << " dd=" << dd << endl;
cout << "*ef= " << *ef << " ef=" << ef << endl;
cout << endl;
}
自己体会一下数组和指针的魅力吧(本质上数组和指针没区别哦)
void shuzu()
{
int s = 2;//定义一个int型变量s
char s0 = 3;//定义一个char型变量s0
int* pa[] = { (int*)"a",(int*)"c" };//定义一个int型指针数组
char* pb[] = { "c","d" };//定义一个char型指针数组
pa[0] = &s;//令pa[0]取s地址
pb[0] = &s0;//令pb[0]取s1地址
cout << pa[0] << " " << (void*)pb[0] << endl;//打印pa[0] pb[0] 是什么?
cout << *(pa[0]) << " " << (void*)*(pb[0]) << endl;//定义在pa[0]pb[0]上的是什么?
cout << sizeof(*(pa[0])) << " " << sizeof(*(pb[0])) << endl;///定义在pa[0]pb[0]上的东西的大小?
cout << &(pa[0]) << " " << &(pb[0]) << endl;//对pa[0]pb[0]取地址得的是什么?
cout << sizeof(&(pa[0])) << " " << sizeof(&(pb[0])) << endl;//对pa[0]pb[0]取地址的大小什么?
cout << &s << " " << (void*)&s0 << endl;//来看看s 和 s1的地址吧
}
这因该叫指针函数了
/*先看看回调函数的样式,回调下面的函数*/
void option_mode(double (*p)(double,double,int))
{
p(2,3,1);
}
类似于回调函数,这是不是更高效的代替swich了呢?
//定义一些基本函数有两种类型 double add(double aa0, double aa1){ aa1+=aa0;return aa1;} double cut(double aa0, double aa1){aa0 -= aa1;return aa0;} double option(double x, double y ,int oper) { double(*option[])(double , double ) = { add,cut };//我声明一个函数 //double类型 ,可传入两个double变量,option【】={add,cut};当option【1】=add //那么该函数->double(*add)(double,double); cout << option[oper](x, y)<<endl; return 1; }

浙公网安备 33010602011771号