嵌入式学习笔记-C语言(二)

来源:互联网 发布:酒店订单管理系统源码 编辑:程序博客网 时间:2024/04/30 16:20

今天太困了.呵呵.课程进度也不是很快.不过已经开始接近C的关键了.到了指针和数组.

首先.复习昨天的内容-----练习矩阵的上三角,下三角形式输出,这个主要是嵌套循环的使用.其次要实习矩阵的转置.这个在嵌套循环的基础上要实现数组元素的互换.如果外层用i来记录行下标变化,相对而用j来控制的话,那只要进行上三角或下三角的元素进行对换就可以了,否则就会出问题了.有可能换过了,又换回来,反复对换,到最后自己也不知道哪些换了,哪些没有换.下面是一段主要的伪码:

 

int main()

{

     int a[3][3]={.......};//元素就不写了.

     int i,j,temp;

     for(i=0;i<3;i++)

          for(j=0;j<i;j++)//一定是j<i||j>i这样才不会发生反复的对换.

                {

                      temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;

                 }

     ........

}

还有一个关于行列式的主要操作是就两个行列式的乘积.如M1[i][k]*M2[k][j].一定是第一个的列数等于第二个的行数.这样才可以相乘.原理要查找线性代数去.示例如下:

 

 

int main()

{

     int a[3][4]={.......};b[4][3]={.......},c[3][3];//元素就不写了.

     int i,j,k;

     for(i=0;i<3;i++)

          for(j=0;j<3;j++)               

                 {

                      c[i][j]=0;

                       for(k=0;k<4;k++)//三层循环的使用;

                        {

                               c[i][j]+=a[i][k]*a[k][j];

                         }

                 }

     ........

}

 

其次.一个关于从输入设备中取数据的时候,会发生意想不到的事.如

#1 ch1=getchar();

#2 putchar();

#3 ch2=getchar();

#4 putchar();

这样ch2就不能如你想的收到你想接收的字符,那它接受到了什么?可能将其中的内容以ASCII的形式打印出来,那样你将发现是'/10',也就是回车,是你在接收ch1时必然一同输入的,这是因为系统存在缓冲区的原因,那怎样实现上面代码本来的目的呢?可以在#2后加入一个getchar();只要从缓冲区中读取出来那个回车就可以了.scanf()函数也有同样的问题.至于为什么在系统中存在缓冲区,因为存在速度不匹配的地方.

 

再次.指针的内容,重点理解空指针.有三种形式:

void *Ptr;Ptr=NULL;Ptr=0||Ptr=0x0;

再有是指针与数组的关系.数组的名就是一个始终指向数据的第一个元素的地址的指针.是个指向非常量的常量指针.如果借用C++中的const关键字,那样指针一共可分为四类:1,指向非常量的非常量指针,也就是不用const 来修饰;2,指向常量的非常量指针,const char *SPtr;也就是一定要指向一个char 类型的字符串,但具体是哪个串不一定,更重要的是不可以通过这个指针来修改所指向的对象的内容,这也就很好地保护了原数据.;3指向非常量的常量指针,数组名就是这样的指针,即指针始终指向一个地址,不可改变.但是所指的对象的内容是可以修改的.例:char * const SPtr;4指向常量的常量指针,这样的指针的指向和指向的对象的内容都不可改变.例:

 

const char* const SPtr;

 

再次,字符串与指针.字符串以'/0'结束的;它存储的类别是static,即在整个程序的运行都存在.多个地方引用同一个串,可以共享,也可不共享;文字串为常量,不允许修改.指向字符串的指针为4类指针中的常量指针,与数组名相近.字符串指针始终指向字符串的首字符.

同时在使用字符数组存储字符串的时候,要考虑到数组的大小,要有足够的空间存储字符以及'/0'.

 

今日的课程内容大致这些.明天继续.日子就这样一天一天地过去.

 

 

 

原创粉丝点击