2维字符数组这么定义的:
static char *a1[] =
{
"abc.xar",
"123.xar"
};在定义指向这个2维字符数组指针的指针时候,vc提示这么定义
char **pointp=a1;
是正确的.这么定义
char **pointp=&a1;
就会出现错误?
static char *a1[] =
{
"abc.xar",
"123.xar"
};在定义指向这个2维字符数组指针的指针时候,vc提示这么定义
char **pointp=a1;
是正确的.这么定义
char **pointp=&a1;
就会出现错误?
解决方案 »
- 【求助】关于openCV缩放的问题!!
- 急【求助】VC2003,如何在编译dll时自动生成lib文件??
- 关于模拟点击框架内页面中连接的问题
- 请问一个在vc6.0下使用stl的问题,谢谢
- CAsyncSocket 对象实例是否有效问题,Up有分。小弟在此先谢过各位大侠。
- 怎样消除贴图后的残影????
- 机械的《MFC Visual C++ 6编程技术内幕》如何?我以为是《Visual C++技术内幕》而买了,有点上当的感觉。
- 请问 sp2 是什东东??
- 请教关于VC句柄,内存的等资源的释放方法?
- 请问[kxy]、[unl]、[zdg]、[929]四大天王有关DLL问题???
- 用opencv图像读写与处理的问题?
- [请教]关于Edit控件如何改变字体颜色
在你的2维数组中,*a1也是代表指针变量,所以char **pointp =a1的等式是成立的。
但是在后面的char **pointp=&a1 的等式中,&a1是指数组的地址,所以等式不成立。
所以就会出现错误。
数组 a1[] 是指针数组,里面的元素是指针,所以,你定义char **pointp=a1; pointp 是指向指针的指针,而a1 就是指向指针的指针,其实a1 就是指向a1[]数组的第一个元素,而这个元素本身是个指针,所以,你这个赋值是可以的;而&a1 是数组 a1[]的地址,纯粹的地址而不是指向其它内存地址的指针。所以不能像
char **pointp=&a1; 这样赋值。但是,可以像下面这样赋值:
char **point=&a1[0];//正确
char **pointp=&a1[1];//正确
因为,a1[1]存储的是个指针,这个指针指向字符串"123.xar"。
char **pointp=&a1;
就会出现错误?================
因为&a1的类型指向一维,而**pointp指向两维
指针变量赋值之后,又变成变量,肯定出错!