嵌入式学习笔记-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'.
今日的课程内容大致这些.明天继续.日子就这样一天一天地过去.
- 嵌入式学习笔记-C语言(二)
- 嵌入式学习笔记-C语言(一)
- 嵌入式学习笔记-C语言(三)
- c语言学习笔记二
- C语言学习笔记<二 >
- C语言学习笔记二
- 学习嵌入式C语言
- 《C语言宝典》学习笔记(二):概述
- C语言学习笔记(二)
- c语言学习笔记二十
- c语言学习笔记二十一
- c语言学习笔记二十二
- c语言学习笔记二十三
- c语言学习笔记二十四
- c语言学习笔记二十五
- c语言学习笔记二十六
- C语言学习笔记(二)
- C语言程序学习(二)笔记
- intel并行工具
- java Properties类
- 主板跳线接法详解(图)
- 面试及总结2
- 设置vim语法高亮显示和自动缩进
- 嵌入式学习笔记-C语言(二)
- 如何在Android中使用离线的谷歌地图Google maps
- Struts2中Action方法的动态调用(一个Actiong有两个方法)
- 求两个字符串的最长公共子序列的长度(动态规划)
- MFC & ODBC 的相关操作
- 删除各类显卡驱动生成桌面右扩展菜单选项
- 逆序输出
- mmc无法创建管理单元解决方案
- 29.June.2010 Diary