【C++】 10 C++中的新成员

代码逐风
• 阅读 180

动态内存分配

C++中的动态内存分配

C++中通过new关键字进行动态内存申请
C++中的动态内存申请是基于类型进行的
delete关键字用于内存释放

include <stdio.h>


int main()
{
    int* p = new int;
    
    *p = 5;
    *p = *p + 10;
    
    printf("p = %p\n", p);
    printf("*p = %d\n", *p);
    
    delete p;
    
    p = new int[10];
    
    for(int i=0; i<10; i++)
    {
        p[i] = i + 1;
        
        printf("p[%d] = %d\n", i, p[i]);
    }
    
    delete[] p;
    
    return 0;
}

输出:

p = 0x8f74008
*p = 15
p[0] = 1
p[1] = 2
p[2] = 3
p[3] = 4
p[4] = 5
p[5] = 6
p[6] = 7
p[7] = 8
p[8] = 9
p[9] = 10

【C++】 10 C++中的新成员
例:

#include <stdio.h>
int main(int argc, char *argv[])

{

     int* pi = new int(1);

     float* pf = new float(2.0f);

     char* pc = new char('c');

     printf("*pi = %d\n",*pi);

     printf("*pf = %f\n",*pf);

     printf("*pc = %c\n",*pc);

     delete pi;pf;pc;

     return 0;

}

输出:

*pi = 1
*pf = 2.000000
*pc = c

注意区别:

int* p = new int(1); //申请int类型的内存
int* pa = new int[1];//申请int类型的内存空间,空间变量为1;

C++中的命名空间

C语言中只有一个全局作用域

C语言中所有的全局标识符共享同一个作用域
标识符之间可能发生冲突

C++中提出了命名空间的概念

不同命名空间将全局作用域分成不同的部分
命名空间可以相互嵌套
全局作用域也叫默认命名空间
小标题

C++命名空间的使用

使用整个命名空间:using namespace name;
使用命名空间中的变量:using namespeace name::variable;
使用默认命名空间中的变量: ::variable

例:

#include <stdio.h>
namespace frist
{
   int i = 50;
}
namespace second
{
  int  i = 100;
   namespace internal
   {
     struct P
     {
       int x;
       int y;
     };
    
   }
}

int main(int argc, char *argv[])
{   
    using namespace frist;
    using namespace second;
    using second::internal::P;
    using namespace second::internal;
    using namespace second::internal;
    P ss = {2,3};
    printf("second::i= %d\n",frist::i);
    printf("frist::i= %d\n",second::i);
    printf("ss.x= %d\n",ss.x);
    printf("ss.y= %d\n",ss.y);

    return 0;

}

输出:

second::i= 50
frist::i= 100
ss.x= 2
ss.y= 3

小结:

C++中内置了动态内存分配的专用关键字
C++中动态内存分配可以同时进行初始化
C++中的动态内存空间分配基于类型进行的
C++中命名空间用于解决名称冲突的问题

小结:
【C++】 10 C++中的新成员

点赞
收藏
评论区
推荐文章
小万哥 小万哥
1年前
掌握 C++ 中 static 关键字的多种使用场景
在最开始C中引入了static关键字可以用于修饰变量和函数,后来由于C引入了class的概念,现在static可以修饰的对象分为以下5种:
小万哥 小万哥
2年前
C++中static关键字的作用
static是什么在最开始C中引入了static关键字可以用于修饰变量和函数,后来由于C引入了class的概念,现在static可以修饰的对象分为以下5种:成员变量,成员函数,普通函数,局部变量,全局变量static的作用修饰成员变量static修饰成
cpp加油站 cpp加油站
4年前
c++动态分配浅析
1.c语言中动态分配和释放在c中,申请动态内存是使用malloc和free,这两个函数是c的标准库函数,分配内存使用的是系统调用,使用它们必须包含stdlib.h,才能编译通过。malloc后需要检查内存是否分配成功,free则要在指针不为空的情况下才能进行。示例代码如下:cinclude<stdio.hinclude<stdlib.hinclude
Stella981 Stella981
3年前
C++中vector的使用
在c中,vector是一个十分有用的容器。作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector在C标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类(https://www.oschina.net/action/GoToLink?url
Stella981 Stella981
3年前
C++中stack
参考:https://blog.csdn.net/u012655441/article/details/64920825C中stack的用法                                                 
Wesley13 Wesley13
3年前
C++程序设计基础(6)内存分配
1.知识点三步走:申请,释放,指针置空。1.1malloc、free函数在C语言中内存malloc函数申请动态空间,以下展示其基本用法:1intpNULL;2p(int)malloc(sizeof(int)10);//申请3free(p);//释放,否则会造成内存
Stella981 Stella981
3年前
C++中int的构造函数
引言看到有本书中是这样写的:std::map<intd;da;如果map中没有\\操作符会自动插入,插入时会调用默认构造函数初始化,int会初始化吗?大牛写的书应该不会有错。问题曾经见过有这样的写法:inta(10);貌似是构造函数的语法。那么这些呢:
Wesley13 Wesley13
3年前
C++_代码重用2
对于姓名可以使用字符数组来表示,但这将限制姓名的长度。当然,还可以使用char指针和动态内存分配,但这要求提供大量的支持代码。有一个好的方法就是使用一个他人开发好的类的对象来表示。如果C库提供了合适的类,实现起来将更简单。C库确实提供了一个这样的类,它就是valarray。valarray类简介     模板类在使用时需要指定具体数
Wesley13 Wesley13
3年前
Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF
1概述本文是利用Java实现操作系统中的四种动态内存分配方式,分别是:BFNFWFFF分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解。2四种分配方式2.1概念操作系统中有一个动态分区分配的概念,内
Stella981 Stella981
3年前
Python的垃圾回收机制
垃圾回收机制「垃圾回收(GC)」大家应该多多少少都了解过,什么是垃圾回收呢?垃圾回收GC的全拼是GarbageCollection,在维基百科的定义是:在计算机科学中,垃圾回收(英语:GarbageCollection,缩写为GC)是一种自动的内存管理机制。当一个电脑上的动态内存不再需要时,就应该予以释放,以让出内存,这种内存资源
深度学习 深度学习
2个月前
链表栈实现指南:从基础到实践
一、简介和特点链表栈是一种使用链表实现的栈数据结构,遵循后进先出(LIFO)原则。本文实现的链表栈通过动态内存分配节点,避免了数组实现的固定大小限制。‌主要特点‌:1.动态大小:无需预先分配固定空间2.高效操作:入栈和出栈都是O(1)时间复杂度3.内存效率
代码逐风
代码逐风
Lv1
今为羌笛出塞声,使我三军泪如雨。
文章
4
粉丝
0
获赞
0