c++指针数组(c语言指针p和#p区别)

admin 354 0

老铁们,大家好,相信还有很多朋友对于c++指针数组和c语言指针p和*p区别的相关问题不太懂,没关系,今天就由我来为大家分享分享c++指针数组以及c语言指针p和*p区别的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

一、c++ 指针与数组的转换

1、指针与数组,在理论上,数组在程序编码时就已经定义好了空间准备存放数据,而指针只是在程序编码时就已经定义好了一个存储地址内容的空间。

2、在实际操作中,指针与数组的操作基本是一样的。

3、char msg[]="yuejian is a handsome man\n";

4、在C语言中通过不这样写,应该这样写:

5、数组msg的地址赋给指针cp,打印指针cp指向的第一个字符,将指针下移一个字符的位置,看当前字符是否为“\0”,如是则结束循环,否则打印当前字符,将指针下移一个字符的位置,进入循环。

二、C++中,能否定义一个指针 指向一个 数组指针如何操作

1、数组指针,用楼上的话就是指向数组的指针,操作指针就可以操作数组如下:

2、打印的结果为2,原因是p初始化指向了数组a的首地址,即a[0]。*(p+1)即先将地址向后挪动一位即指向了a[1],再取地址里面的值,即取a[1]的值,故结果为2。

3、printf("指针数组:%d\n",*(parray[2]+3));

4、//打印结果为4,原因是每个数组的数组名就是指向该数组第一个元素的指针。而parray是存了3个指针的数组,parray[2]就是指针a3,a3+3就是指向了a3的第4个元素,所以parray[2]+3指向了a3的第4个元素。*(parray[2]+3))就是取地址里面的值,故为4

三、c++ 如何让指针指向字符数组

1、C++指向字符数组的指针,需要满足字符数组名作为第一个元素地址,指针保存在另一个对象的地址;案例代码如下:

2、//sa保存的是第一个字符的地址,对sa进行解引用得到第一个字符;

3、charsb[]={'B','o','b'};

4、charsc[]={'S','a','m','\0'};

5、char*sar[]={"Allan","Tom","Peter","Raees","Umer"};

6、//将(字符指针的)数组的一对迭代器传递给(字符指针的)列表,将列表初始化为

7、list<char*>slst(sar,sar+5);

8、//在VS2005上没有"预期的运行时错误"(C++Primer)

9、svec.assign(slst.begin(),slst.end());

10、for(list<char*>::iteratorlit=slst.begin();lit!=slst.end();++lit){

11、for(vector<string>::iteratorvit=svec.begin();vit!=svec.end();++vit){

四、C++ delete指针数组的问题

1、这个问题很多人都曾经问过,但这是个无用的问题!

2、你只需要记住,new之后,在不使用该指针变量时进行delete释放就好!

3、至于delete会做哪些事,如何去释放,不是现在的能力能理解(了解)了的,那是系统底层的应用,不用过多关心。

4、一般情况,释放只是告诉操作系统,“我”不再使用该内存了,可以提供给“别人”使用了!

5、而在没有人使用时,你当然可以再次读到相应的数据。

6、int*p=new int; delete p;非数组的释放

7、int*pa=new int[5]; delete [] pa;数组的释放

五、C++类类型指针数组

1、/*能不能说的具体一点呢?请问同学是不懂用法呢还是需要一个例子来理解?

2、其实类指针数组就是指向类的指针的一个指针,是二级指针。

3、 CStudent(char*name="",int age=0);

4、CStudent::CStudent(char*name,int age)

5、 m_name=new char[strlen(name)+1];

6、void CStudent::Displayinfo() const

7、 cout<<m_name<<""<<m_age<<endl;

8、 CStudent Student1("同学1",18),Student2("同学2",19),Student3("同学3",20);

9、 CStudent** aStudent;//申请一个二级指针

10、 aStudent[i]->Displayinfo();

11、你的程序就错在C语言是不支持动态数组的。要用动态数组的话我这里给出了例子。可以用new函数的方法来申请动态数组。你可以学习一下。

六、C语言可以用指针数组赋值给数组指针吗

1、我这里有C++环境,帮你试了一下不行(当然,也有变相的方法,就是将数组指针的首元素地址给指针数组中的一个指针),估计C差不多。

2、二者的类型系统认为是不相等的。

3、我这里定义了一个指针数组 b,并且对它赋值了。声明了一个数组指针c,赋值时候就有图中的提示了。反过来一样的

4、如果想赋值和使用,可以参考图,通过结果可以看出是正确的

七、c++如何用指针指向二维数组

1、你是想让这个指针直接指向你静态定义的数组还是指让指针开辟一块新空间让它等于静态数组,这是很不同的。

2、照楼上说的方法你自然可以很方便得到静态数组的指针。但是注意如果你的这个赋值是要在其他地方使用,即不是在

3、所在的函数内部使用的话(而且用到指针的大都这种状况)

4、那么你必须new出一片新空间来,再用原来的静态定义给新空间赋值。

5、这样保证你所得到的地址是有效的,这些数字还在。

6、如果你直接在外部使用静态定义的数组的话,地址自然能找到,但是里面其实已经被析构掉了,内容天差地别,你对其操作还会引起非法。

c++指针数组和c语言指针p和*p区别的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!