char *P=new char[10]的意思
比如char*P;P=newchar[10];我想问的是char*P只是一个指针,默认指向了一个char型的数据的地址,只能是*P来访问,但是一旦P=newchar[10...
比如char *P; P=new char[10]; 我想问的是char *P只是一个指针,默认指向了一个char型的数据的地址,只能是*P来访问,但是一旦P=new char[10];后,就可以P++了,而刚才不用P=new char[10]时候P++就是错的,系统咋知道什么时候是对了还是什么时候是错的啊,P只是指针,++就内存加相应的地址。 又比如结构体指针 Chassis_List = new CHASSISLIST[num]; 谢谢
展开
1个回答
展开全部
P=new
char[10];是在程序堆中分配了10个char大小的空间,同时指针P指向这块内存的首地址
,也就是char[0]这个数据项的地址。因为P是一个指针变量,可以进行变量的相应的操作(比如自加之类的),当前P指向char[0],*p
,就是char[0]对应的值。P++就指向了char[1]依次类推...
在没有给P赋初值的时候P也是可以进行P++操作的,可是没有意义。因为P本身的初值是没有意义,它表示了一块没有意义的地址。你让他加加也就说不通了,没初值是可以编译过去的
指针操作必须赋初值的
char
a=9;
那如果char
*P=&a;
这样p++有意义吗,他本身初值对啊
你觉得有意义么?你想到一个什么结果?比如a的地址为0X00000008,你加上一个一之后指针的值是0X00000009,这个里面放的什么你是不知道的,操作系统也不会让你读取里面的数据,这样的话就可以崩溃
char[10];是在程序堆中分配了10个char大小的空间,同时指针P指向这块内存的首地址
,也就是char[0]这个数据项的地址。因为P是一个指针变量,可以进行变量的相应的操作(比如自加之类的),当前P指向char[0],*p
,就是char[0]对应的值。P++就指向了char[1]依次类推...
在没有给P赋初值的时候P也是可以进行P++操作的,可是没有意义。因为P本身的初值是没有意义,它表示了一块没有意义的地址。你让他加加也就说不通了,没初值是可以编译过去的
指针操作必须赋初值的
char
a=9;
那如果char
*P=&a;
这样p++有意义吗,他本身初值对啊
你觉得有意义么?你想到一个什么结果?比如a的地址为0X00000008,你加上一个一之后指针的值是0X00000009,这个里面放的什么你是不知道的,操作系统也不会让你读取里面的数据,这样的话就可以崩溃
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询