ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ 与 C的不同点_基础语法

2020-01-22 12:09:03  阅读:277  来源: 互联网

标签:函数 int 内存 C++ 语法 引用 new 不同点 delete


基本语法

基本与c完全相似,以下是一些小小的区别

一. 输入和输出上的区别

  • printf(“string”) 变为—> cout << " string " << endl;
  • scanf(“%x”, variable)** 变为–> cin >> variable

二. 字符串上的区别

  • c风格声明:**char str[] = " ";

  • c++风格声明:**string str = " " ;

    注意:C++中所有字符串有关的操作都需要#include< string >头文件

三. 内存四区与new/delete操作
内存四区

  • 程序执行前:代码区(存放代码)和全局区(存放全局变量,静态变量和常量(全局常量 + 字符串常量))
    ------tip:全局区存放两变两常(全局/static/const和字符串)

  • 程序执行后: 栈区堆区

    1. 栈区是编译器自动分配的空间,装取(短命的)各函数运行时要用到的局部变量和形参,因为是包产到户自动分配,故栈区上该函数执行完后该数据以后直接被释放掉
      ------tip:(故所以函数中不要返回一个局部变量,因为函数执行完毕以后其中储存在栈区中的局部变量的数据会被清空掉,注意清空的是变量中的数据而不是变量自身的内存)

    2. 堆区是程序员使用new分配的空间,堆区上的数据只有等程序完全运行完后其中的数据或者使用delete才会被释放掉

new与delete

  • new 在堆区创建内存,返回内存地址
    int* p = new int(data)
    int* arr = new int[Size]

  • delete 删掉堆区内存 (C语言中的 free)

    delete p
    delete[] arr

四. 允许引用

  • 定义
    int& b = a;,引用又叫起别名,创建一个变量的别名,它们拥有同一块内存,同一个内存中的数据

  • 本质
    引用就是一个指针常量(该指针的指向的地址不可以更改,但指针指向地址的数据可以更改)
    初始化:int& b = a ---> int * const b = &a
    赋值 :b = 10 ---> *b = 10

  • 注意:
    1,int b = a 这是赋值操作,虽然它们有同一个数据,但是内存地址不相同
    2,引用需要直接初始化,初始化后不可以更改引用
    3,返回变量(非局部变量)引用的函数,可以作为左值直接赋值
    int& test();test() = 1000;
    4,函数中以引用作为形参,那么函数操作形参时,可以同时改变形参(函数的引用调用) // 可以用const int & b 实现 常数引用,防止误操作

五. 函数拓展

  • 允许默认参数
  • 允许函数重载
    为了提高复用性,函数可以重载(同一函数名可以多次使用)
    函数重载的条件:
    1. 不同的参数类型 或 参数个数 或 参数顺序

    2. 函数名一致,作用域一致

      注意:函数返回类型不可作为重载条件 — int func() / void func()


面向对象编程

C与C++最大的不同点

内容较多,详情请跳转我的另一篇博客:
C++ 与 C的不同点_面向对象
https://blog.csdn.net/a13352912632/article/details/104068816

我的霹雳貓阿洛 发布了14 篇原创文章 · 获赞 31 · 访问量 2820 私信 关注

标签:函数,int,内存,C++,语法,引用,new,不同点,delete
来源: https://blog.csdn.net/a13352912632/article/details/104030860

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有