Head First C 笔记
Posted MoRua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Head First C 笔记相关的知识,希望对你有一定的参考价值。
嗨翻c语言
1. 入门
- 为什么字符从零开始编号?
字符的索引数值表示的是一个偏移量,它表示的是当前所引用的字符与第一个字符之间差多少个字符。
- 单双引号的区别?
单引号 一个字符,双~ 字符串
- 字符串字面值和字符数组的区别?
前者是常量,一旦赋值,不能再修改。
- Break 和continue?
break是退出循环,continue是退出当前循环并且进行下一次循环。
break不能用于if语句。
2.储存器和指针
- 两张存储器图
图一
图二 一个学JAVA时用的图(来源博瑞思创—翁老师)
- Int *a =5
A 是一个指针变量,它保存一个地址,地址中保存一个int类型的数值5
- 指针的作用
指针可以避免副本的产生和共享数据。
- 指针像是一个遥控器,存储器像是一个冰箱。
- sizeof(指针)
- 数组名做指针
1 int a []={1,2,3}; 2 int *b =a; 3 c=sizeof(a); 4 d=sizeof(b);
c = 3 d = 4/8 (32/64)
&a == a &b! = b
- 指针的退化
把数组赋给指针变量,指针变量就会只知道数组的地址信息,而不知道数组的大小。相当于指针丢失了一些信息,称这种信息丢失为退化。
数组变量不能指向其他地方
- 指针类型
指针也是有类型,char int 等,主要是在进行指针运算时可以根据指针类型进行转换,比如char类型的指针a ,a+1 存储器地址 +1
int类型的~b ,b+1 ~ +4
- 指针输出
1 int num[]={1,2,3} 2 printf("%p",num);//地址 3 printf("%i",num[1]);//数值 4 printf("%i",*(num+1));//数值 5 6 7 8 char *msg="Hello" 9 puts(msg+1)//字符 10 printf("%p",msg)//地址
- 指针的加法交换律(来源:百度)
-
1 int dose[]={1,2,3}; 2 3 dose[2] == *(dose+2) == *(2+dose) ==2[dose] 4 5 只要一个是指针,一个是整形就行。
用指针输入数据
1 fgets(food,sizeof(food),stdin); 2 scanf("%4s",food); 3 gets(food);
安全从高到低
scnaf遇到空格就会停止。(亲测有用)
- card[] or *card?
-
1 card []="qwe";//数组 2 3 4 5 一下这两个等价 6 void func(char card[]) 7 { 8 //card 是指针 9 } 10 11 void func(*card) 12 { 13 //card 是指针 14 }
const与字符串常量
字符串常量都是只读的,不可修改。加了const以后,会在你试图修改const修饰过的变量时编译器报错。
- 字符串常量和字符数组
1 char * card="QWE"//不可修改 2 char car[]="BBB"//可修改
以上是关于Head First C 笔记的主要内容,如果未能解决你的问题,请参考以下文章
Head First Python(如何向PYPI发布你的代码)学习笔记
读书笔记之《head first Servlet and Jsp》 第五章 属性和监听者