msg[]中的每个元素存放的都是地址(指针),指向MessageData类型
p是指向指针的,即指向 指向MessageData类型指针的指针msg[0]就是指向某个MessageData类型变量的指针
而p[0]可以指向msg[0]CString b="jj";
CString *a;
CString ** aa;
a=&b;
aa=&a;p[0]与msg[0]不能同等使用。
p是指向指针的,即指向 指向MessageData类型指针的指针msg[0]就是指向某个MessageData类型变量的指针
而p[0]可以指向msg[0]CString b="jj";
CString *a;
CString ** aa;
a=&b;
aa=&a;p[0]与msg[0]不能同等使用。
p是指向指针的指针,即指向MessageData类型指针的指针,
msg[]中的每个元素存放的都是地址(指针),指向MessageData类型的指针,
所以,
p[0]等于msg[0],
对于指针来说,[]下标运算和*效果一样,比如:*p==msg[0],*(p+1)==msg[1];
欢迎指教
2.查内存泄漏CSDN上讨论很多。最简单的办法:在VC中用Go(F5)运行程序,完了以后看下面的信息
p[0]是指向MessageData的指针!
msg[0]是MessageData的实例!不过可以转换后使用!
*p[0] 与msg[0]等同;
另用 p=msg会有类型不匹配的错误!
msg[0]是MessageData的实例吗?
*(p)类型为messagedata*
*(msg+0)类型也为messagedata*
cmemstate检测内存漏洞
更正更正。
p[0]和msg[0]是等同的
msg[0]是指向MessageData类型的指针
p是指向指针的指针,所以p[0]就是指针了,指向MessageData类型
int a[10];
int *q;
q=a;
利用q++就可以遍历a数组,因为int 是占一个字节;但以上MessageData是一个结构,也不确定占用多少内存空间,p++会不会出错,但事实上,手边的程序运行是没有出错(即p[0]=msg[0])是可行的,但当p++时,指针p 自加的多少???VC 又是如何控制的????
p移动的大小就是MessageData结构的大小
你自己可以在debug中看吗
看p++后的地址于之前的地址差异
还有说p++移动的字节数是结构的大小也是错的,p是指向指针的指针,他每++一次是增加指针长度的字节 也就是4个字节