了解使用"new int[]"的目的
understanding the purpose of using "new int[]"
#include "stdafx.h"
using namespace std;
#include <iostream>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
//Search program
void read_data(int* , int); //array address, size
int seq_search(int , int* , int);//key,array address,size
int binary_search(int , int* , int);
void main(void)
{
int *arr , size , ans , key ;
cout << "Please enter the size: ";
cin >> size ;
arr = new int[size] ;
read_data(arr , size);
cout << "Enter the number to search for: ";
cin >> key ;
ans = binary_search(key, arr , size);
if(ans == -1)
cout << "The number " << key << " does not exist n";
else
cout << "The number " << key << " exists at location " << ans << endl;
getch();
}
void read_data(int *pt , int ss)
{
cout << "Please enter " << ss << " numbers: n";
for(int k = 0 ; k < ss ; k++)
{
cout << "Enter the " << k + 1 << " number: " ;
cin >> pt[k] ;
}
}
int seq_search(int num , int a[] , int s)
{
for(int k = 0 ; k < s ; k++)
if(num == a[k]) { return k ; }
return -1 ;
}
int binary_search(int num , int a[] , int s)
{
int first , last , mid ;
first = 0 ; last = s -1 ;
while(first <= last)
{
mid = (first + last) / 2 ;
if(num == a[mid]) return mid ;
else if(num > a[mid]) first = mid + 1 ;
else
last = mid - 1 ;
}
return -1;
}
从我的理解(我是一个真正的初学者)是,例如* p = a;指向地址如果整数a,并且p = %a;是a的引用地址或实际地址。
我理解我们使用这个新的int是为了在程序的任何地方使用数组,因为它在main结束时被销毁,但是为什么我不在main之外声明它也可以在任何地方使用呢?
告诉你这件事的人是真心恨你的。相信我。我理解我们使用这个新的int是为了在程序的任何地方使用数组,因为它在main结束时被销毁,但是为什么我不在main之外声明它也可以在任何地方使用呢?
您通常不希望毫无目的地使用new
。new
操作符动态分配内存,当main
存在(程序结束)时,作为最后的手段将被销毁,尽管我不确定这是否得到保证。但是动态分配的非delete
d内存将导致内存泄漏,这在程序中是相当危险的。
大多数情况下,有更好的方法来处理动态分配的资源和动态大小的数组(在本例中为std::vector
)。
只要读一本关于c++的好书,了解new
和delete
的实际含义,以及为什么你应该避免它们。
要在main之外声明它,您必须在编译时知道数组的大小
相关文章:
- 正在尝试了解输入验证循环
- 了解 GLM- openGL 中的相机转换
- C++我需要了解在哪里使用指针和双指针
- 如何深入了解明显的腐败
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 重载运算符new[]的行为取决于析构函数
- 了解嵌套循环打印星号图案
- 过载'operator new'如何导致无限循环?
- 创建具有 new in 函数和"this is nullptr"异常的对象
- Codelite C++ new project
- 在类c++中使用new声明数组
- g++用户定义的动态链接库上的全局new和delete运算符
- 了解每月第一天函数的代码
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?
- 使用'new'和指针了解C++代码
- 了解C++中的动态对象("new")
- 了解指针和'new'如何工作的问题
- 为什么替换malloc()需要了解链接器,而::operator new()不需要
- 了解使用"new int[]"的目的