精华内容
下载资源
问答
  • 对象指针数组

    千次阅读 2019-05-20 13:10:28
    创建对象指针数组 一开始想太复杂,好几次遇到都不知道怎么下手 ...//这是从xx题中选取的片段 class Shape{//这是一个抽象基类 ... }; ... int main() { int t; cin>>t; while(t--){ Shape *s[3];//...

    创建对象的指针数组

    一开始想太复杂,好几次遇到都不知道怎么下手

    ...//这是从xx题中选取的片段
    class Shape{//这是一个抽象基类
    ...
    };
    ...
    int main()
    {
        int t;
        cin>>t;
        while(t--){
            Shape *s[3];//要求创建对象的指针数组,可以这样创建
            ...
            s[0] = &c;//后续再相应赋值
            s[1] = &sq;//此处c、sq、rt是Shape的子类对象
            s[2] = &rt;
    		...
        }
        return 0;
    }
    

    需要注意的点,对象指针数组,数组中的元素都只是一个指针,需加*号,才能取到对象,期末机考又给自己挖坑了。

    template<class T>
    void compare(T* arr){
    	// 注意,在传入对象指针数组的情况下,此处会比较两个指针,而非比较两个对象
    	if(arr[0] < arr[1]){
    	//...
    	// 比较指针并不非调用对象的 < 重载函数,也不会调用类型转换重载函数
    	}
    	//...
    
    	// 比较对象的写法,也就是本来的目的
    	if(*arr[0] < *arr[1]){
    	//...
    	}
    }
    
    
    int main(){
    
    	Date* date[3];
    	date[0] = new Date();
    	date[1] = new Date();
    	//	...
    	compare(date);//此处传入了对象指针数组
    	return 0;
    }
    
    展开全文
  • C++对象指针数组与堆中对象数组

    千次阅读 2016-05-06 11:15:31
    /*堆中对象数组、对象指针数组*/ class stu { public: void set(int x){i = x + 6;} int get(){return i*i;}; private: int i; }; void main() { const int n = 1000; stu * p = new stu[n];
    #include <IOSTREAM>
    using namespace std;
    /*堆中对象数组、对象指针数组*/
    class stu
    {
    public:
    	void set(int x){i = x + 6;}
    	int get(){return i*i;};
    private:
    	int i;
    };
    void main()
    {
    	const int n = 1000;
    	stu * p = new stu[n];//在堆中定义了一个对象数组,并将其首地址传送给对象指针p.
    	int i;
    	stu * p0 = p;
    	for (i=0; i<n; i++)
    	{
    		p->set(i);
    		cout<<"p["<<i<<"]:"<<p->get()<<endl;
    		p++;
    	}
    	delete [] p0;//删除堆中对象数组;(注:此处p0不可换为p,因为p的值在for循环中已被改变,不再是数组的首地址了。)
    	
    	const int m = 1000;
    	stu * p1[m]; //p1成了指针数组的数组名,是个指针常量
    	for (i=0; i<m; i++)
    	{
    		p1[i] = new stu;//数组p1中,每个元素都是个对象指针,故可以直接被new stu赋值。
    //		p1 = p1+i;//错误,p1是个数组名,是个指针常量
    		p1[i]->set(i+1);
    		cout<<"p1["<<i<<"]:"<<p1[i]->get()<<endl;
    		delete p1[i];
    	}
    
    }

    展开全文
  • C++对象指针数组

    2020-11-27 14:05:21
    1.指向数组指针 #include<iostream> using namespace std; class M{ public: M(){ a=b=0; } M(int i,int j){ a=i;b=j; } void print(){ cout<<a<<","<<b<<"\t...

    1.指向数组的指针

    #include<iostream>
    using namespace std;
    class M{
    	public:
    		M(){
    			a=b=0;
    		}
    		M(int i,int j){
    			a=i;b=j;
    		}
    		void print(){
    			cout<<a<<","<<b<<"\t";
    		}
    	private:
    		int a,b;
    };
    int main(){
    	M m[2][4];
    	int x=10,y=10;
    	for(int i=0;i<2;i++){
    		for(int j=0;j<4;j++){
    			m[i][j]=M(x+=2,y+=10);
    		}
    	}
    	M (* pm)[4](m);
    	for(int i=0;i<2;i++){
    		cout<<endl;
    		for(int j=0;j<4;j++){
    			(*(*(pm+i)+j)).print();
    		}
    	}
    }
    

    其中 M (* pm)[4] (m)* 等价于 M(* pm)[4]=m

    2.指针数组
    数组元素为指针的数组称为指针数组。

    #include<iostream>
    #include<cstring>
    using namespace std;
    const int N=5;
    int main(){
    	char * strings[N];
    	char str[80];
    	for(int i=0;i<N;i++){
    		cin.getline(str,sizeof(str));
    		strings[i]=new char[strlen(str)+1];
    		strcpy(strings[i],str);
    		cout<<strings[i]<<endl;
    	}
    }
    

    3.对象指针数组

    #include<iostream>
    #include<cstring>
    using namespace std;
    class A{
    	public:
    		A(int i=0,int j=0){
    			a=i;b=j;
    		}
    		void print();
    	private:
    		int a,b;
    };
    void A::print(){
    	cout<<a<<","<<b<<endl;
    }
    int main(){
    	A a1(7,8),a2,a3(5,7);
    	A *b[3]={&a3,&a2,&a1};
    	for(int i=0;i<3;i++){
    		b[i]->print();
    	}
    } 
    

    4.带参数的main()函数
    实际上是对指针数组应用的一个具体实例。

    #include<iostream>
    using namespace std;
    int main(int argc,char *argv[]){
    	cout<<argc<<endl;
    	cout<<argv[0]<<endl;
    	if(argc>1){
    		for(int i=1;i<argc;i++){
    			cout<<argv[i]<<endl;
    		}
    	}
    }
    
    展开全文
  • 如果a是已经定义好的一个类,有如下定义语句:a *p[5],则当类对象数组指针p离开它的作用域时,系统自动调用类a的析构函数0次。 为什么是0次????
  • C++ 对象指针数组

    千次阅读 2019-04-21 12:27:40
    typedef Student * PStudent; PStudent *stud;//Student **stud; stud=new PStudent[5];...每一维都是一个指针 for(int k=0;k<5;k++) stud[k]=new Student();//为每一维指针new一个类 代替: typedef Stu...
    typedef Student * PStudent;
    PStudent *stud;//Student **stud;
    stud=new PStudent[5];//stud=new Student *[5];每一维都是一个指针
    for(int k=0;k<5;k++)
        stud[k]=new Student();//为每一维指针new一个类

    代替:

    typedef Student *PStudent;
    PStudent stud[5];
    for(int k=0;k<5;k++)
        stud[k]=new Student();



    原文:https://blog.csdn.net/fengfeng0328/article/details/69870099 

    展开全文
  • //定义对象指针数组,并且初始化parray[0]和parray[1] parray[2]=&p3; //给parray[2]赋值 parray[3]=&p4; //给parray[3]赋值 for (int i=0; i; i++) { parray[i]->DisPoint(); //调用parray[i]所指向对象的成员函数...
  • 今天在研究infomap的源码的是否,发现里面定义了个Node的指针数组: Node **node = new Node*[Nnode]; for(i=0;i<Nnode;i++){ node[i]=new Node(i); degree[i]=0.0; } 对于Node **node = new Node*[Nnode]...
  • 如何动态定义一个 对象指针数组

    千次阅读 2013-12-12 09:45:09
    1 我们先看看如何动态定义一个char类型(基本类型int/float/double)的数组  const int n ;  char *a = new char[n];  new char[n] 表示在内存中(heap)分配了sizeof(char)*n字节的空间,并且返回一个指向所...
  • 这里就不介绍什么是二级指针了,直接看程序领会吧!! typedef Student * PStudent; PStudent *stud;//Student **stud; stud=new PStudent[5];//stud=new Student *[5];每一维都是一个指针 for(int k=0;k stud[k]=...
  • 指针数组与数组指针 指针数组指针数组就是存放指针的数组,其本质为数组。 数组指针:数组指针是指向数组的指针,其本质为指针指向的对象是数组。 由于“[ ]”的优先级高于“ * ”的优先级,指针数组与数组指针的...
  • 首先我们要知道什么是指针 指针是C语言中广泛使用的一种数据类型。 指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑...指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身
  • 什么是指针? 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。... 指针数组:它是一个数组,数组里面每个元素都是指针,数组的
  • 在所有学习c的程序员的学习过程中,无不在学习指针中花过许多功夫,而正是指针使c威力无穷,所以要想成为一名优秀的c程序员,对指针有一个深入而完整的理解是先决条件。...指针数组: 是一个数组,数组...
  • 指针是一个存储计算机内存地址的变量。在这份教程里“引用”表示计算机内存地址。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、...
  • 指针(Pointer)是编程语言中的一个对象,利用地址,它的值可以直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化地成为“指针”。即...
  • C++数组与指针对象数组对象指针C++数组与指针对象数组对象指针
  • 指针数组,数组指针

    2020-07-21 17:11:41
    指针数组: 1)首先是一个数组 2)数组的元素是指针。 如果数组元素都是相同类型的指针,则称这个数组为指针数组。 所谓相同类型的指针是说指针所指向的对象类型是相同的。 一维,指针数组指针数组中的每一个元素...
  • 【1】指针数组和数组指针 指针数组:望文生义就是一个数组成员为指针的数组。 int *arr1[10]; char *arr2[10]; 运算符*的优先级低于”[ ]”,所以说变量名先和哪个运算符结合就表示哪种类型,比如上面arr1先和”...
  • 首先,在接触这些词前,要记住一件事,这些名词都是有规律的,比如:指针数组,这是一个数组,前面的指针是修饰数组的。同理,数组指针就是一个指针,前面的数组是修饰指针的。 指针数组 定义:指针数组就是一个...
  • 顾名思义,指针数组描述的对象是一个数组,在此前提下,我们可以联想到字符串数组,整型数组,浮点型数组等。字符串数组指的是数组中的每个元素都是字符,整形、浮点型数组中每个元素都是整形的,浮点型的数字,指针...
  • 指针数组

    2020-12-06 22:43:39
    指针数组,就是说首先是一个数组,而数组的元素是指针,也就是说,如果数组元素都是相同类型的指针,则称这个数组为指针数组。所谓相同类型的指针是说指针所指向的对象类型是相同的。一维指针数组的定义形式为: ...
  • 数组指针vs指针数组

    2018-07-25 18:44:14
    一、指向二维数组元素的指针 参考上一篇 二、数组指针:指向一维数组的指针...指针数组:是一个元素都为指针的数组;其中的元素(指针)可以指向不同的对象。   程序体验一下即可 /* *copyright(c) 2018,...
  • 一、数组指针与指针数组 数组指针是指向这个数组首地址的指针,指向对象是这个数组;  指针数组是存放一类指针的数组,这个数组的每个元素都是一个指针;  例子:  int a[10];  int* s;  s = a;//这里s...
  • 指针数组与数组指针   当我们在学习指针与数组时总会遇到两个令人容易混淆的概念:数组指针与指针数组。   在这里数组指针是指向数组的指针,其本质为指针指向的对象是数组。由于数组的形式多样所以数组指针的...
  • 数组指针和指针数组

    2016-07-21 14:24:34
    指针数组是一个包含指针的数组,它的每个元素都是个指针,指向相同类型的不同对象; 比如: char *arr[] = {"abcd", "233333", "teststr"}; 其含义是定义了一个指针数组并对它进行了初始化,arr数组的每个元素...
  • 指针数组 一级指针 指针是编程语言中的一个对象,它的值直接指向存在电脑存储器另一个地方的值, 由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。 因此,将地址形象化的称为“指针”,意思是通过...
  • 指针+数组=指针数组

    2018-12-29 13:21:37
    指针数组 指针 什么是指针?在计算机科学中,指针(Pointer)是编程语言的一个对象,利用地址,它的值直接指向(Pointer)存在电脑存储器中另一个地方的值。由于通过地址能和找到所需的变量单元,可以说,地址指向该...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,585
精华内容 3,834
关键字:

对象指针数组