C++程序设计:理解结构化编程与内存管理

需积分: 15 1 下载量 10 浏览量 更新于2024-08-24 收藏 8.66MB PPT 举报
"C++³ÌÐòÉè¼Æ¡ª¡ªÌ·ºÆÇ¿¡£C++ÔËÐдóС¡£³ÌÐò±à³Ì¡£C++ѧϰ¡£" C++是一门强大的编程语言,它在C语言的基础上进行了扩展和优化,增加了面向对象编程的特性。在这个特定的程序示例中,我们看到一个简单的C++程序,用于输出结构体`date`的大小。程序的主要目的是演示如何使用`sizeof`运算符来获取内存中数据类型或变量所占用的字节数。 ```cpp void main(void) { struct date { int year, month, day; } today; cout << sizeof(struct date) << endl; } ``` 程序中定义了一个名为`date`的结构体,包含三个整型成员:`year`、`month`和`day`,分别表示年、月、日。然后,通过`sizeof`运算符,我们可以得到这个结构体在内存中占据的空间大小。在32位系统中,通常每个`int`占4个字节,因此,结构体`date`的总大小是3个`int`的大小,即12个字节。这正是程序输出的结果:`12`。 C++程序设计不仅关注代码的效率,还强调代码的可读性和可维护性。C++支持多种编程范式,包括过程式编程、面向对象编程和泛型编程,这使得它在编写复杂系统软件和高性能应用方面非常受欢迎。 C++语言的特点包括: 1. **结构化编程**:C++支持结构化编程概念,允许开发者将代码组织成函数和类,有助于代码的管理和重用。 2. **高效性**:C++代码可以直接映射到机器码,运行效率高,适合开发操作系统、游戏引擎等对性能要求严格的项目。 3. **丰富的运算符**:C++提供了丰富的运算符,包括算术、逻辑和位运算符,使代码更灵活。 4. **数据结构和抽象**:C++支持动态内存分配、数组、指针和各种数据结构(如栈、队列、链表等),并且通过类和对象实现了抽象,可以创建复杂的类层次结构。 5. **可移植性**:C++程序在不同平台间的可移植性良好,只需少量或无需修改即可在不同系统上运行。 6. **灵活性**:由于C++语法较为宽松,程序员可以根据需求设计出高度灵活的代码,但也因为这一点,对于初学者来说,理解和调试程序可能更具挑战性。 学习C++需要深入理解其基本语法、数据类型、流程控制、函数、类和对象,以及模板和异常处理等高级特性。虽然调试C++程序可能相对困难,但一旦掌握了这门语言,就能编写出高效且可维护的代码。
2023-07-08 上传

int main(void) { const unsigned char *point; u16 i=0; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ // uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú // KEY_Init(); //°´¼ü³õʼ»¯ AT24CXX_Init(); //IIC³õʼ»¯ OLED_init(); point= &picture_tab[0]; TIM_OCInitTypeDef TIM_OCInitStructure; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 LED_Init(); //LED¶Ë¿Ú³õʼ»¯ TIM3_Int_Init(4999,7199);//10KhzµÄ¼ÆÊýƵÂÊ£¬¼ÆÊýµ½5000Ϊ500ms TIM4_PWM_Init(10000-1,72-1); //72M/72=1MHz¼ÆÊýƵÂÊ,ÖØ×°ÔØÖµ while(1) { OLED_ShowString(0,30,"21221054",16); OLED_ShowString(0,15,"2023/5/18",16); OLED_ShowChinese(0,0,0,16,1); OLED_ShowChinese(16,0,1,16,1); OLED_ShowChinese(32,0,2,16,1); delay_ms(1000); OLED_Refresh_Gram(); //¸üÐÂÏÔʾµ½OLED if(++i > 3) { LED1=!LED1;//ÌáʾϵͳÕýÔÚÔËÐÐ i=0; } while(1) { u16 u16tmp; u16tmp += 500; if(u16tmp > 10000) u16tmp=0; //³õʼ»¯TIM4 Channe3 PWMģʽ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //Ñ¡Ôñ¶¨Ê±Æ÷ģʽ:TIMÂö³å¿í¶Èµ÷ÖÆģʽ2 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜ TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //Êä³ö¼«ÐÔ:TIMÊä³ö±È½Ï¼«ÐÔ¸ß TIM_OCInitStructure.TIM_Pulse = u16tmp; TIM_OC3Init(TIM4, &TIM_OCInitStructure); //¸ù¾ÝTÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèTIM4 OC3 LED2=!LED2; //LED3=!LED3; delay_ms(300); } } }这段代码问题如下:declaration may not appear after executable statement inblock,TIM OCINITTYPEDEF TIM OCINITSTRUCTURE,请修改这个问题

2023-06-09 上传