设为首页 加入收藏

TOP

嵌入式C语言开发实战详解(二)
2017-12-29 06:06:47 】 浏览:593
Tags:嵌入式 语言 开发 实战 详解
的大小,如 int型;

变量的作用域:变量的有效性范围,如变量的使用范围;

变量的存储类别:变量在内存中的存储方式,不同的存储方式影响变量在内存中的生存周期。

\

MMU:虚拟地址单元 解决内存资源稀缺问题

(打印一个地址:打印的都是虚拟的地址)

为了保护数据的安全,操作系统会对空间做划分:

\

栈空间:局部变量、函数形参、自动变量(调用后释放)

特点:先进后出,管理权限:系统

堆空间:malloc、ralloc、calloc 分配空间

特点:先进先出,管理权限:用户

数据段:bss:保存未初始化的全局变量

rodata:常量

.data(静态数据区):全局变量(程序结束后释放)、static 修饰变量

全局变量与局部变量的区别:

(主要从空间的分配,没有初始化的值 什么时候释放等角度入手)

9、声明与定义:

声明:不分配内存空间,可以声明多次;

定义:分配内存空间,只可以定义一次。

变量的声明有两种情况:

定义性声明:需要建立存储空间的,例如:int a在声明时就已经建立了存储空间;

引用性声明:不需要建立存储空间, 例如:extern int a 其中变量a是在别的文件中定义的。

10、格式化输出与输入:

首先,通过代码来示例以下不同的数据类型的不同的输入输出方法:

[html]view plaincopy

#include

intmain()

{

inti;

intnum;

charch;

floatf_num;

doubled_num;

inta[3];

charsrc[100];

scanf("%d",&num);

printf("num=%d\n",num);

getchar();

scanf("%c",&ch);

printf("ch=%c\n",ch);

scanf("%f",&f_num);

printf("f_num=%f\n",f_num);

scanf("%lf",&d_num);

printf("d_num=%lf\n",d_num);

printf("pleaseinputa[3]:\n");

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

{

scanf("%d",&a[i]);

}

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

{

printf("a[%d]=%d\n",i,a[i]);

}

scanf("%s",src);

printf("src[100]=%s\n",src);

return0;

} 运行结果:

\

在获取字符是用一个getchar()清空缓存区

以下是getchar()的作用(转自网络):

1.从缓冲区读走一个字符,相当于清除缓冲区

2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把

这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误

3. getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab) getchar()使用不方便,解决方法:

(1)使用下面的语句清除回车: while(getchar()!='\n');

(2)用getche()或getch()代替getchar(),其作用是从键盘读入一个字符(不用按回车),注意要包含头文件

三种获得字符串的方法:scanf gets getchar

scanf 与 gets 的区别(以下转自网络):

gets(s)函数与 scanf("%s",&s) 相似,但不完全相同,使用scanf("%s",&s) 函数输入字符串时存在一个问题,就是如果输入了空格会认

为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

1.scanf() 所在头文件:stdio.h

语法:scanf("格式控制字符串",变量地址列表);

接受字符串时:scanf("%s",字符数组名或指针);

2.gets() 所在头文件:stdio.h

语法:gets(字符数组名或指针);

两者在接受字符串时:

1.不同点: scanf不能接受空格、制表符Tab、回车等; 而gets能够接受空格、制表符Tab和回车等;

2.相同点: 字符串接受结束后自动加'\0'。

使用gets获取字符串代码:

[html]view plaincopy

#include

intmain()

{

charsrc[100];

printf("inputastring:");

gets(src);

printf("src=%s\n",src);

return0;

}

使用getchar()获取字符串:

[html]view plaincopy

#include

intmain()

{

charch;

charsrc[10];

inti=0;

while((ch=getchar())!='\n')

{

src[i]=ch;

i++;

if(i==9)

{

printf("error!\n");

exit(1);

}

src[i]='\0';

}

return0;

}

如何让scanf不遇到空格结束呢?

在%前面加空格

详情请戳网址:http://blog.csdn.net/mishifangxiangdefeng/article/details/7163002

(技术大牛写的帖)

获取数组方法:

1、

[html]view plaincopy

#include

intmain()

{

inta[3];

inti;

int*p=a;

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

{

scanf("%d",p++);

}

p=a;

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

{

printf("a[%d]=%d\n",i,*(p+i));

}

return0;

} [html]view plaincopy

2、 [html]view plaincopy

#include

intmain()

{

inta[3];

inti;

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

{

scanf("%d",&a[i]);

}

p=a;

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

{

printf("a[%d]=%d\n",i,a[i]);

}

return0;

} 3、

[html]view plaincopy

#include

intmain()

{

inta[3];

inti;

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

{

scanf("%d",a+i);

}

p=a;

for

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言实例之困死自己的智能蛇 下一篇C语言代码实现的万年历计算

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目