C和指针---读书笔记。
C和指针---读书笔记。
1,unsigned int 声明无符号int类型 默认是 singned,即此整数类型包括正负数。也可用于long上。
说明符有 unsigned signed short long
2,枚举 enum jump{cpu = 100, a = 2};
3,for 循环的执行顺序,,for( expression1; expression2, expression3){statement;}
expression1->expression2->statement->expression3->expression2->statement->expression3->.....重复此过程直到不满足条件。
4,C中的 switch(expression){statement},expression只能是整数。
5,goto,,可以跳出多组循环,break不可以。
6,C里面 ,if(i) i 必须是int或float类型,除0外其他数值都为真。
7,所谓短路求值就是 expression1 && expression2,如果expression1为假,则不执行expression2,同理 expression1 || expression2,如果expression1 为真,则表达式为真,不执行expression2。这种只执行expression1就得出结论的判断语句被称为"短路求职"。
8,指针。
int a = 112, b = -1;
float c = 3.14;
int *d = &a;
float *e = &c;
printf("d = %i\n", d);
printf("d = %p\n", d);
printf("*d = %p\n", *d);
printf("*d = %d\n", *d);
*d = 23;
printf("a=%d\n", a);
注意 占位符%i就是打印值,%p是打印指针,也就是存值的地址。注意指针也有自己的地址。*d = 9,在对指针进行间接操作之前,确定它们已经被初始化。*d = &a,,确定a已初始化。
10,int a;
int *d = &a;
*d = 10 - *d;
d = 10 - *d;
倒数第二行,与a = 10 - a,是一个意思。最后一行,d = 10 - *d是错误的,因为d不是整型,d是一个指针,没人知道或没人在乎它的值。
10,左值与右值。
左值右值基本信息编辑
C/C++语言中可以放在赋值符号左边的变量,即具有对应的可以由用户访问的存储单元,并且能够由用户去改变其值的量。左值表示存储在计算机内存的对象,而不是常量或计算的结果。或者说左值是代表一个内存地址值,并且通过这个内存地址,就可以对内存进行读并且写(主要是能写)操作;这也就是为什么左值可以被赋值的原因了。相对应的还有右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真实值。简单来说就是,左值相当于地址值,右值相当于数据值。右值指的是引用了一个存储在某个内存地址里的数据。
比如。
int a=3;
const int b=5;
a=b+2; //a是左值,b+2是右值
b=a+2; //错!b是只读的左值但无写入权,不能出现在赋值符号左边
(a=4)+=28; //a=4是左值表达式,28是右值,+=为赋值操作符
34=a+2; //错!34是字面量不能做左值