iOS 学习笔记(第二次冲击 C部分)Part 1
先记录这几天在treehouse学习的点,因为我学习编程也是从C语言开始,只是那已经是很久以前的事情了,所以当treehouse的课程以清晰,翔实的教学方式让我重温C语言时,我甚至有一些小感动,要感谢拉我一起到treehouse学习的白爷(您批评我的部分我一定虚心接受),今天要记录几个点如下:
1 函数需要先定义,后实现。这是我上次学习ObjC时时常令我抓狂的部分,我总是忘记定义和实现是分开的这个情况,以目前擅长的语言来说,都是随用随时定义(长期使用脚本语言的习惯,ActionScript,JavaScript)。如果我要定义一个函数,我要这样写。
//declare float sum(float a,float b); int main() { //use sum(100.0,200.0); return 0; } //implements float sum(float a,float b){ return a+b ; }
2 printf和占位符(暂记)
%d int,
%ld byte,
%c char,
%s char[],
%f float,
%lf double
2 指针定义语法,我的前两次学习都没整明白这里,现在我依然模糊,声明一个指针的时候是这样婶儿的:
char *letter;
赋值的时候是这样婶儿的:
char words[] = "abcdef"; letter = &words[2];
如果我现在这样输出letter,
printf("%c\n",*letter);
得到的是letter对应地址存放的字符,可是如果我这样输出
printf("%s \n",letter);
得到的是letter对应的变量值(是因为对应的是变量地址么?)
比较令我惊奇的是,我还可以对letter指针做自增计算
letter++;
然后再打印得到的结果就是words[3]对应的字符,letter君你到底是个啥啊……凌乱中。
假如我定义一个函数用于计算字符串的长度,应该将参数写成char *varNam,我将上面的凌乱做了一个整理,我想我有点明白了:
int getLengthOfChars(char *arr); int main() { char *letter; char words[] = "abcdef"; letter = &words[0]; printf("char of letter is %c\n",*letter); printf("letter points to string %s\n",letter); letter++; printf("after letter++ letter points to string %s\n",letter); printf("length of mywords is %d\n",getLengthOfChars(words)); printf("length of letter is %d\n",getLengthOfChars(letter)); return 0; } int getLengthOfChars(char *arr){ return sizeof(arr)-1; }
EF阶段学习报告,我已经开始EF的学习5天了,感觉很不错,成果是完成了1.2个单元的线上学习(满分),一节F2F课程(8分9分满),3节在线语音课程(75/70/84 100满),我会继续努力的!