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君你到底是个啥啊……凌乱中。62faf073gw1ebvtdbwxnjg2060080h9v

 

假如我定义一个函数用于计算字符串的长度,应该将参数写成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满),我会继续努力的!

屏幕快照 2014-01-17 上午12.13.31