
看到上边的图片里的代码了吗? 对这段 char* message[]={“hello”,“world”}; 有感觉吗?
--数组
--声明一个数组 当我们需要很多很多的数据时,比如记录一个班同学的数学成绩,一个月的温度,当然常常是更多。那么这个时候还像前边说的那样一个一个的声明就很困难了。那么就需要一个新的工具来解决这个问题。 数组是由一系列类型相同的元素构成的。就像声明一个整数型一样,可以使用声明来告诉编译器您需要一个数组。 int states[50];
这个语句的意思是声明了一个50个整数的数组,批量声明是不是效率高了。方括号[]表示States这个标识符表示数组,方括号里边的数字说明这个数组最多能包含元素的数量。
states[0]是数组states的第一个元素,states[49]是第50个元素。告诉一个程序员数一百个数,伟大的程序员同志们一般都会从0数到99,哈哈,开个玩笑。 自然还可以这样声明 char code[12];//12个字符的数组 float candy[365];//365个浮点数的数组 --给数组赋值 同样像我们之前声明一个整数型的量,那之后一定要给它赋值,不然我何苦声明呢是吧。那声明了一个数组当然也要赋值。 参照我们之前了解的单个数值变量(有时也称为标量)的声明中用表示式来赋值,如下所示: int a=1; 相似,我们可以通过下面的方式对数组赋值: int a[8]={0,1,2,3,4,5,6,7}; 可以使用花括号{}括起来的一系列数值来初始化数组。数值之间用逗号隔开,在数值和逗号之间可以使用空格。 这样数组a的第一个元素a[0]=0,依次类推。 除了这样赋值我们还能逐个的赋值,下边就用一段代码来举个例子: #include <stdio.h> #define SIZE 50//把SIZE宏定义为50 int main (void)//声明主函数 { /*声明整数型数值count、数组evens*/ int count,evens[SIZE]; /*for循环*/ for(count=0,count<SIZE;count++)
/*通过循环执行来赋值*/ evens[count]=2*count;
} 大家可以自己先感受一下,学过C语言的同学读起来不应该困难。 --多维数组 例如要记录5个班每班30人的成绩的学生数学成绩,要声明怎样的数组呢?其实我们可以声明一个150个变量,使每一个变量代表一个学生的数学成绩,可那就体现不出5个班级了。但是我们也可以这样,可以设计5个数组,每个数组包括30个元素,这是一种比较笨的方法,而且如果要记录50个班的那就不合适了。 C语言为我们提供了这样的方法,我们可以使用一个数组,即主数组包含5个元素,每个元素代表一个班级。代表一个班级的元素是包含30个元素的数组。这种数组的数组,就是二维数组。可以用下面的方式声明: int sf[5][30];//数学分数,我就简称sf了 赋值举例: int a[2][3]={ {3,1,2}, {3,2,1}, }; 如果第一列表中只要一个数, int a[2][3]={ {3}, {3,2,1}, }; 如果第一列表中只要一个数,则第一含只有第一个元素得到赋值,最后两个元素的被默认为初始化的0,。如果列表中的数多于3个,系统会报告错误,而且不影响下一行的赋值。
--函数指针
函数指针是指向函数地址的指针。就是利用利用该指针可以知道函数在内存中的位置。因此,也就可以利用函数指针调用函数。函数的声明方法是:
类型 (*指针变量名)(函数的参数列表) 比如我们需要对2个变量进行声明,第一个是函数指针fp,该函数指针变量指向一个入口参数为一个整数,返回值为另一个整数的函数;第二个是函数指针数组fp_array[],这个数组的每个元素都是一个函数的指针,这些函数指针指向入口参数为一个整数,返回值为指向整数的指针的函数,声明如下: /*声明了一个函数指针变量fp,它指向一个入口参数与返回值都是整数的函数*/ int (*fp)(int); /*声明了一个函数指针数组fp_array[],它的每个元素都是指向一个入口为整数,返回值为整数指针的函数*/ int *fp_array[10](int); 大家要注意:在函数指针声明中,函数的指针变量名必须写在一个括号内,如果我们省略了这个括号,那么这个声明的含义就完全不同,如: int *fp(int); 上边的例子中第一行声明是一个函数fp(),该函数有一个整数型的参数并返回一个指向整数的指针。这是因为函数调用了运算符“()”的优先级高于运算符“*”,编译器首先会认为fp(int)是一个运算单位,这显然是一个函数。而对函数返回值做了取内容运算*(pf(int))的结果是一个整数int,因此fp是一个以整数型为入口参数、返回值为指向整数的指针的函数,而不是我们希望的声明得到的函数指针了。
用了六周的时间,介绍了一点点嵌入式编程C语言最基础的东西,只是展现了一个很粗略很粗略的框架,如果能和大家自学的收获有点共鸣或者让你有了自学C语言的想法,那就是最好的效果了。有同学说越来越难懂了,那是当然了,一眼就能看懂的那是韩剧,这毕竟工科知识,大家坚持坚持。但工科知识也不是硬推硬算、死记硬背,重要的是理解。
以下是本系列教程文章列表:欢迎大家踊跃讨论,有问题可在51黑论坛回帖提出.
C语言基础教程(1):http://www.51hei.com/bbs/dpj-41177-1.html C语言教程(2)-关键字 变量:http://www.51hei.com/bbs/dpj-41178-1.html C语言教程(3)-控制语句:http://www.51hei.com/bbs/dpj-41179-1.html C语言教程(4)-运算符:http://www.51hei.com/bbs/dpj-41180-1.html C语言教程(5)-函数:http://www.51hei.com/bbs/dpj-41181-1.html C语言教程(6)-数组与函数指针:http://www.51hei.com/bbs/dpj-41182-1.html
51单片机教程:http://www.51hei.com/bbs/mcu-xuexi-1.html STM32教程:http://www.51hei.com/bbs/dpj-41167-1.html
|