C++类类型指针数组
#include
using namespace std;
template
class ClassA
{
public:
void set(string x,T a);
//各种函数...
private:
int a;
double b;
string c;
T * AMemAdd[3] ;
};
template
void ClassA::set(string x,T a)
{
}
int main(void)
{
ClassA a;
return 0;
}
dongyue2008的程序没错呀。
问题是不是在这里,你的程序:
for(int k =0; k < size; k++)
{
arr[k] = new TYPE;
}
arr = new TYPE*[size]; //这个是应该放在前面的
把两个部分写反了,结果arr被赋值到一个新的地址,内容是三个不确定的int指针地址,于是赋值的时候就出错了
/*能不能说的具体一点呢?请问同学是不懂用法呢还是需要一个例子来理解?
其实类指针数组就是指向类的指针的一个指针,是二级指针。
给写一个例子吧*/
#include<iostream>
using namespace std;
class CStudent
{
char *m_name;
int m_age;
public:
CStudent(char *name="",int age=0);
void Displayinfo() const;
};//简单的定义一个学生类
CStudent::CStudent(char *name,int age)
{
m_name=new char[strlen(name)+1];
strcpy(m_name,name);
m_age=age;
}
void CStudent::Displayinfo() const
{
cout<<m_name<<" "<<m_age<<endl;
}
int main()
{
int i,num;
CStudent Student1("同学1",18),Student2("同学2",19),Student3("同学3",20);
CStudent ** aStudent;//申请一个二级指针
cin>>num;
aStudent=new CStudent *[num];
aStudent[0]=&Student1;
aStudent[1]=&Student2;
aStudent[2]=&Student3;
for(i=0;i<3;i++)
aStudent[i]->Displayinfo();
return 0;
}
/*
你的程序就错在C语言是不支持动态数组的。要用动态数组的话我这里给出了例子。可以用new函数的方法来申请动态数组。你可以学习一下。
*/
上面有人已经说得很清楚了,我补充下。
C++中,如果采用静态内存分配的方式声明数组(即,形如int a[5]的声明方式),数组大小只能为常量。
这里的常量可以是一个常数(1,2,等),前文define的整型值,也可以是一个const量。如:
#define XX 5
const int x2 = 6;
int a[x2]; // 正确
int b[XX]; // 正确
如果不能接受这种方式,你需要采用动态内存分配,以下是例子:
int* array;
int size = rand()%20+5; // size取值范围5到24(含)
array = new int[size]; // 动态数组,大小为size,不定值
……
delete [] array; // 释放空间
C++不支持动态数组,数组在编译时就已经被分配了内存,因此不能够使用变量作为数组定义时的大小。
把private改为public,先定义一个对象,再赋值:
A obja;
HEADER_MSG[0] = "AI";
HEADER_MSG[1] = "VI";
HEADER_MSG[2] = "OI";
声明数组必须用常量.
int m=5;
int a[m];//错误,m是变量!
/////////////////
const int m=5;
int a[m]//正确
/////////////////
#define m 5
int a[m]//正确
指针有哪些类型的
指针类型有以下几个:1. 原生指针 2. 智能指针 3. 指针数组与数组指针 4. 多级指针或链式指针。接下来进行 原生指针: 这是最基础的指针类型,它是一个存储内存地址的变量。在C语言中经常使用,如int *p表示一个指向整型的指针。它指向内存中的某个地址,可以通过这个地址访问到对应的数据。原生指针...
指针数组和数组指针的区别
指针数组和数组指针是两种不同类型的概念。在定义和使用上有所区别指针数组是一个数组,其中的每个元素都是指针类型,而数组指针是一个指针,它指向一个数组的首地址指针数组的声明方式为“typearray”,而数组指针的声明方式为“type(ptr)[size]”。指针数组:指针数组是一个数组,其中的每个元素都是指...
C语言中,如何定义一个‘指针数组’,这个‘指针数组’专门用来存放‘数组...
指针数组定义int*p[n];[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来...
指针数组和数组指针的区别有哪些?
4、字符串指针指向的字符串中的字符是不能改变的,而字符数组中的字符是可以改变的。指针数组本身就是个数组,只不过呢,它里面存放的数据类型不是int,也不是char这类基本类型,而是一个指针类型,说白了就是地址。
C语言问题 什么事指针类型
指针类型 基本类型指针 数组指针 指针,数组指针 数组指针:为指向数组的指针。例如:int a[5],*p1;char c[6]="hello",p2;p1=a;p2=c;结构体指针 结构体,结构体指针 在计算机系统中每一个数据均需要占用一定的内存空间,而每段空间均有唯一的地址与之对应,因此在计算机系统中任意数据均有确定的...
C语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别?
char *a[]表示的是数组a[]是一个指向char的指针类型数组,相当于a[]里面的每一个元素都实际值都是一个指向字符串的指针(即存储某个字符串的首地址)后面这个你应该要问的是char (*a)[]吧,不然的话就和第一个一样了 char (*a) [N]表示的是指向一个元素为N的字符串数组的指针,说白了就...
什么是指针数组
指针数组可以作为函数的参量使用,使用方式与普通数组类似。数组指针是指向数组首元素的地址的指针,其本质为指针,指针存放的是数组首地址的地址,相当于2级指针,这个指针不可移动。指针数组是数组元素为指针的数组,其本质为数组。指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便。
c语言的基本数据类型包括
C语言的数据类型包括:基本类型、、构造类型、指针类型、空类型。其中构造类型中包括共用体、数组、结构体三种类型。基本类型中还包括整型、浮点型、字符型和枚举型四种类型。1、基本类型,,也就是C语言中的基础类型,其中包括整数类型、字符型、浮点型、枚举类型。2、构造类型,就是使用基本类型的数据,...
什么是指针数组?
指针数组就是说是一个数组,数组中的每一个成员是一个指针。举例如下:char *a[5]={"tan","li","cheng","fang","zheng"};定义指针数组a,存放姓名,a有5个成员,即a[5]是包含5个指针元素的指针数组,5个指针中每个的值是该字符串的首地址,也就是说 a[0]=字符't'的地址 a[1]=字符...
指针数组与指向指针的指针有什么区别
指针数组:指针数组可以说成指针的数组,这个变量是一个数组。其次指针修饰这个数组,意思是说这个数组的所有元素都是指针类型,在 32 位系统中指针占四个字节。数组指针:数组指针可以说成是数组的指针.这个变量是一个指针。其次数组修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针...
宏眉复方: 比如你定义了一个类:class stud {......}; 用指针数组存放stud类的多个对象:stud *p[3];定义指向类stud的指针数组,如果还有不懂得,消息我啦
清河县15042156514: C++ 指针数组 - ?
宏眉复方: 1:int *p[2]好理解的,指针数组,p[0], p[1]都是一个指针2.int (*p)[2],定义指向二维数组的指针,此二维数组的第二维必须是2. 如当有int (*p)[2]时:int a[3][3]; p=a;是错的. int a[3][2]; p=a;是正确的. 同理 int (*p)[3][4];定义指向三维数组的指针...
清河县15042156514: C++ 指针数组是什么?怎么用? - ?
宏眉复方: 指针数组主要用来指向若干字符串,使字符串的处理更加灵活.同时,我们应该清楚知道,字符串本身就是一个一维数组.对于指针数组应注意以下几点:(1):数组中的元素均为指针类型数据(2):在给数组赋值时,表面看到是比如字...
清河县15042156514: C++实体指针开类的数组 - ?
宏眉复方: /*能不能说的具体一点呢?请问同学是不懂用法呢还是需要一个例子来理解? 其实类指针数组就是指向类的指针的一个指针,是二级指针. 给写一个例子吧*/ #includeusing namespace std; class CStudent { char *m_name; int m_age; public: ...
清河县15042156514: C++怎么用指针指向一个数组类型的地址?另外,多维数组中,一维数组是左边的那个还是右边的那个? - ?
宏眉复方: 如 int *p; int a[3]; p=&a[0];//将数组首元素地址赋给指针,就实现了将数组赋给指针,指针只保存地址.多维数组 如 a[2][3]={ 1,2,3, 4,5,6 } 横向表示一行,纵向表示一列 ,二维数组是 一个一维数组然后里的每个元素又是一个一维数组 也就是左边个 2
清河县15042156514: c/c++中数组和指针 - ?
宏眉复方: C/C++ 的基本数据类型中没有字符串,但是 C/C++ 的输入输出库中提供了基于字符指针(或字符数组)的字符串输入输出支持.在C语言中,使用 scanf 和 printf 支持字符串的输入输出;而 C++ 中,则使用 cin 和 cout 实现基于控制台的输入输...
清河县15042156514: c++ 指针引用类型 - ?
宏眉复方: 代表一个指向指针类型的指针.就是说temp这个指针是指向一个指向int类型的指针.这样说你可能不好理解.如:一个二维数组,int a[ 3 ][ 4 ].其中数组名a的性质就类似于int **temp.我们知道数组名就是一个指针,指向数组的首地址.二维数组可以看成是由多个一维数组组成.a[ 0 ]就是第一行的指针,也就是a[0]就是第一行的数组名,相当于int *temp.其中a指针就是指向a[0].a里面就是存放a[0]的地址.理解了不
清河县15042156514: C++中类类型数组如何释放 - ?
宏眉复方: 用delete []释放就可以了.C++中对于不需要逐个析构的类型(本身的析构函数没有操作,并且所有基类和成员的析构函数都没有操作,称为trivally destructible)的对象数组,释放的时候单纯就是把整个数组占用的内存释放(这个时候用delete或...
清河县15042156514: c++指针数组 - ?
宏眉复方: #include<iostream> using namespace std; const int MaxN=5; class Student { private: long No; char *Name; float Score; public: void SetScore(long=0,char *name=NULL,int=0); Student Max(Student *to_score); void Print_out(); float GetScore() { ...
清河县15042156514: C++中指向指针数组的指针数组 - ?
宏眉复方: 我知道你的意思了,你是想另外定义一个数组,把那两个数组存进来时吧.int(*a[2])[3]; int(*b[2])[3];//定义了一个数组,此数组中存放的是指向数组的指针,也就是说此数组b的元素类型是int(*)[3] int(*(*c[2])[2])[3]={&a,&b};//这里我又定义了一个...