收藏文章 楼主

嵌入式使用什么语言,嵌入式常用语言

版块:科技头条   类型:普通   作者:科技资讯   查看:52   回复:0   获赞:0   时间:2023-08-31 06:35:41

局部变量、局部静态变量、全局变量和全局静态变量之间的区别如下:

本文引用的地址:

局部变量:堆栈区域;

局部静态变量:静态区域;

全局变量:静态区域的常数区域;

全局静态变量:静态区域。

在C/C++编程中,程序员需要更准确地了解内存。需要经常操作的内存可以分为以下几类:

1.堆栈:编译器自动分配和释放并存储函数的参数值和局部变量的值。它像数据结构中的堆栈一样工作。

2.堆:一般由程序员分配和释放。如果程序员不释放它,它可能会在程序结束时被OS回收。注意在数据结构上和堆不一样,分配方式和链表差不多,呵呵。

3.静态区域:全局变量和静态变量存储在一起,初始化的全局变量和静态变量在一个区域,未初始化的全局变量和未初始化的静态变量在另一个相邻区域。

4.文本常量区域:这是放置常量字符串的地方。

5.程序代码区:存储函数体的二进制代码。

下面是一个实用的程序代码:

int a = 0;全局初始化区

char * p1全局未初始化区域

主()

{

int b;棚

char s[]= & # 34;abc & # 34;棚

char * p2棚

char * p3 = & # 34123456";123456在常量区,p3在堆栈上。

静态int c = 0;全局(静态)初始化区

P1 =(char *)malloc(10);

p2 =(char *)malloc(20);

分配有10和20字节的区域位于堆区域。

strcpy(p1,& # 34;123456");123456放在常量区,编译器可能会把它与& # 34;123456"优化成一个地方。

}

在C语言的程序中,使用变量时要注意以下几点。

体中定义的变量通常在堆栈上,不需要在程序中管理,而是由编译器处理。

malloc、calloc、realloc等内存分配函数分配的内存空间都在堆上,程序必须保证它是空闲的,否则会发生内存泄漏。

所有函数在体外都定义为全局变量,用static添加的变量无论在函数内部还是外部都放在全局区域。

const定义的变量将放在程序的只读数据区。

程序中间部分的使用

我们用一个简单的例子来说明C语言中变量和段的对应关系。C语言程序中的全局区(静态区)实际上对应的是以下几个段:RO数据;RW数据;BSS数据。

一般来说,直接定义的全局变量在未初始化的数据区。如果变量是初始化的,它在初始化数据区(RW数据),const会放在只读数据区。

示例:const char ro[]= { & # 34;这是只读数据& # 34;};//只读数据区

静态字符rw _ 1[]= { & # 34;这是全局读写数据& # 34;};//读写数据段已经初始化。

char BSS _ 1[100];//未初始化的数据段

const char * ptrconst = & # 34常量数据& # 34;;//字符串放在只读数据段中。

int main()

{

短b;//在堆栈上,需要2个字节。

char a[100];//在堆栈上打开100个字节,work的值是它的第一个地址。

char s[]= & # 34;abcdefg & # 34;//s在堆栈上,占用4个字节。

//“abcdefg”本身放在只读数据存储区,占8个字节。

char * p1//p1在堆栈上,占用4个字节。

char * p2 = & # 34123456";//p2在堆栈上,p2指向的内容不能改变。

//"123456 "读取中间的数据区。

静态字符rw _ 2[]= { & # 34;这是本地读写数据& # 34;};//读/写数据段部分初始化

静态字符BSS _ 2[100];//本地未初始化的数据段

静态int c = 0;//全局(静态)初始化区域

P1 =(char *)malloc(10 * sizeof(char));//在堆区分配内存区域

strcpy(p1,& # 34;xxxx & # 34);//“xxxx”放在只读数据区,占5个字节。

免费(P1);//释放p1指向的内存。

返回0;

}

 
回复列表
默认   热门   正序   倒序

回复:嵌入式使用什么语言,嵌入式常用语言

Powered by 7.12.10

©2015 - 2026 90Link

90link品牌推广 网站地图

您的IP:10.1.228.218,2026-01-03 05:04:36,Processed in 0.25876 second(s).

豫ICP备2023005541号

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息
免责声明
  • 1、本网站所刊载的文章,不代表本网站赞同其观点和对其真实性负责,仅供参考和借鉴。
  • 2、文章中的图片和文字版权归原作者所有,如有侵权请及时联系我们,我们将尽快处理。
  • 3、文章中提到的任何产品或服务,本网站不对其性能、质量、适用性、可靠性、安全性、法律合规性等方面做出任何保证或承诺,仅供读者参考,使用者自行承担风险。
  • 4、本网站不承担任何因使用本站提供的信息、服务或产品而产生的直接、间接、附带或衍生的损失或责任,使用者应自行承担一切风险。

侵权删除请致信 E-Mail:3454251265@qq.com