当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 一个主窗体调用一个active exe 生成的窗体,如何保证生成的窗体始终在主窗体的上方呢?就象标准工程里的子窗体一样。 同时,主程序的处理是多线程形式的,可能同时会调用exe很多次,没一次都有窗体弹出。 因此,上述的功能就是保证第一个被调用的窗口总在最上面,然后第二个跟在第一个后面。。。 效果跟窗口置顶的api完全相反,但又不能在最下面。 不知道说清楚了没? 请高手指点 ......
    摘要: 我想调用exchange发邮件,看了exchange sdk上的例子,都用到microsoft cdo for exchange 2000 server library,但是我的机器上只有microsoft cdo 1.21 library和microsoft cdo for windows 2000 library,我已经安装了outlook 2003。 如何得到microsoft cd......


请各位大侠帮忙解释一下

char   (*p)[100];  
  是指向一维数组的指针还是二维的呀?小弟先谢过了。

NO.1   作者: foochow

二维..

NO.2   作者: russilong

2维

NO.3   作者: xiaocai0001

这个问题??  
   
  那你应该先回答  
  char   *p  
  是指向一维的数组还是二维的数组???

NO.4   作者: junguo

几维都可以,看你怎么用!

NO.5   作者: zhouhuahai

其实此次楼主的发贴涉及到一个打赌:  
   
  详情如下:(QQ群中的交谈)  
   
  笨笨(248406869)   11:31:05  
  你应该去面壁,我早上说指向二维数组有错吗?  
   
  Afra(967072)   11:31:16  
  有错    
  道号“虚无”(66488932)   11:34:17  
  指向一维数组    
  Afra(967072)   11:31:25  
  是指向一维数组    
   
  笨笨(248406869)   11:32:12  
  char   a[4][80]是一维的?    
   
   
   
  道号“虚无”(66488932)   11:36:36  
  char   *p   ;  
  char   array[9];  
  p   =   array;  
  难道能说p是指向一维数组的指针么?    
   
  道号“虚无”(66488932)   11:37:04  
  笨笨,应该去面壁了吧      
   
  笨笨(248406869)   11:34:12  
  怎么不能说    
   
  道号“虚无”(66488932)   11:39:06  
  笨笨,偶们上CSDN去请别人评理,输了的散100分  
  按支持的人数而定,如何?    
  道号“虚无”(66488932)   11:39:13  
       
  Afra(967072)   11:36:27  
  UP    
  晨风(24653420)   11:36:38  
  up    
  笨笨(248406869)   11:36:41  
  行呀    
   
   
   
 

NO.6   作者: kobefly

char   (*p)[100];  
   
  数组指针啊  
   
 

NO.7   作者: xiaocai0001

呵呵  
  我在群里已经看到了~~~

NO.8   作者: zhouhuahai

完了,楼上几位居然都说是二维.  
   
  char   (*p)[100];  
  p是个指针,它指向的是   char   [100];没错吧,这不就是指向一维数组么?  
   
  楼上几位的意思可能是:  
  char   op[2][100];  
  char   (*p)   [100];  
  p   =   op;  
  这样认为p是指向二维数组?  
   
  我认为指向二维数组的指针应该是这样定义:  
  char   (*p1)   [2][100];  
   
  这样使用:  
  char   array[3][2][100];  
  p1   =   array;       可能又有人说这是指向三维数组的指针了.晕...........

NO.9   作者: SammyLan

是对的一个人支持就够了  
  这个是所谓的动态二维数组的创建  
  (=_=)  
  C99的  
 

NO.10   作者: foochow

臭   道士自己在想想去,开饭拉........................

NO.11   作者: afraqiu

p表示的是一维数组的地址吧

NO.12   作者: doway

这样比较着看一下就清楚了:  
   
  char   *p[100];   VS   char   (*p)[100];  
   
  前者是一个数组。数组中的每一个元素是   char   *。  
  后者是一个指针。指向的对象是   char   [100]。  
   
 

NO.13   作者: leihome

臭   道士 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄我是馒头哥哥

NO.14   作者: xiaocai0001

char   (*p)[100];  
   
  准确地说  
  这个p是指向一个一维数组  
  但由于定义成   char   (*p)[100]  
  所以它在进行+,-运算时与普通的char   *q是不同的  
  普通的   ++q   等价与   q的地址移一个内存单元  
  但++p   地址移动的确是100个内存单元  
  这种特性使它可以做为类似一个二维数组来使用  
  因为   p[i][j]编译器解释为   p先移100*i个单元,再移j个单元  
 

NO.15   作者: xiaocai0001

我看还是先讨论  
   
  char   buff[10];  
  char   *p   =   buff;  
   
  在以上这段程序中  
  p是一个指向一个一维数组还是单个元素???  
   
  关键是这儿的p可以有如下的使用方式  
  *p  
  p[i];  
  这样比较简单一些

NO.16   作者: zhouhuahai

这样说吧:  
     
  以最简单的:  
  char   *p   =   NULL;   来说,按楼上诸公的说法来看,  
  p是指向一维数组的指针了?       我根本就没有让它指向数组,难道也算?

NO.17   作者: zhouhuahai

就char   *p而言,它是指向什么的指针?     是指向char的指针.  
  谁能否认?

NO.18   作者: afraqiu

char   (*p)[100];  
  是指向由100个元素组成的一维数组的指针变量,  
  怎么能说是二维的呢??  
   
  char   a[4][100];  
  p=a;//p这时是a[0]的入口地址,也是a[0][0]的入口地址  
   
  cout<<*p<<endl;  
  cout<<*(*p)<<endl;  
  上面这两句结果可是不同的呀  
   
 

NO.19   作者: xiaocai0001

我明确表态~~~  
   
  支持道长一派~~~  
   
  指向一维数组的指针  
  用法上若用[]访问则类似于二维数组的形式

NO.20   作者: zhouhuahai

定义一个指向二维数组的指针  
  char   (*p)[2][100];    
   
  定义一个指向一维数组的指针  
  char   (*p)[100];    
   
  定义一个指向char   的指针:  
  char   *p;    
   
  谁能说我错了?  
 

NO.21   作者: fiftymetre

JJWW的半天,还发到九里打赌什么的切切切

NO.22   作者: fiftymetre

不是九里是群里呵呵,还有笨笨怎么当偶徒儿的嘻嘻

NO.23   作者: wuyazhe

道长说的有理。

NO.24   作者: drizzlecrj

一维,同意虚无

NO.25   作者: playmud

你说的没错.

NO.26   作者: russilong

char   bb[3][10]={...};  
  char   (*p)[10]=new   bb;  
  这个算指向几维?

NO.27   作者: xiaocai0001

楼上写的是???  
  char   (*p)[10]   =   new   bb;//bb???

NO.28   作者: russilong

这么写吧:  
   
  int   i,   j;  
    char(*p)[j]=new   char[i][j];

NO.29   作者: afraqiu

int   i,   j;  
  char(*p)[j]=new   char[i][j];  
   
  p是指向由j个元素组成的一维数组的指针

NO.30   作者: Basin_Fish

是一维吧,只是用法是结合二维数组来用

NO.31   作者: yhbttfile

呵呵,看你怎么理解了。两种理解都没有太大的问题。  
  可以理解为char[100]的指针,也可以理解为char   **。  
  不过,从形式上看,一维可能更容易理解。  
  char   (*p)[100]   =   new   char[4][100];  
  上面的表达式左右两边“基本上”是等价的,右边明显是一个二维数组。从这个角度说,p是二维的也没有错。  
  如果二选一,我赞同一维的~~  
   
  测试代码:  
  ————————————  
  #include<iostream>  
  #include<fstream>  
   
  template<class   T,   int   i>  
  void   fun(T   (&p)[i])  
  {  
  std::cout   <<   "void   fun(T   (&p)[i])"   <<   ":i   =   "   <<   i   <<   std::endl;  
  }  
   
  template<class   T,   int   i,   int   j>  
  void   fun(T   (&p)[i][j])  
  {  
  std::cout   <<   "void   fun(T   (&p)[i])"   <<   ":i   =   "   <<   i   <<   ",   j   =   "   <<   j   <<   std::endl;  
  }  
   
  template<class   T,   int   i>  
  void   fun(T   (*p)[i])  
  {  
  std::cout   <<   "void   fun(T   (*p)[i])"   <<   ":i   =   "   <<   i   <<   std::endl;  
  }  
   
  template<class   T,   int   i,   int   j>  
  void   fun(T   (*p)[i][j])  
  {  
  std::cout   <<   "void   fun(T   (*p)[i][j])"   <<   ":i   =   "   <<   i   <<   ",   j   =   "   <<   j   <<   std::endl;  
  }  
   
   
  int   main(void)  
  {  
  char   (*p)[100]   =   new   char[4][100];  
  std::cout   <<   "char   (*p)[100]   =   new   char[4][100]:"   <<   std::endl;  
  fun(p);  
  char   (*px)[100][100]   =   new   char[4][100][100];  
  std::cout   <<   "char   (*px)[100][100]   =   new   char[4][100][100]:"   <<   std::endl;  
  fun(px);  
  char   sz[100];  
  std::cout   <<   "char   sz[100]:"   <<   std::endl;  
  fun(sz);  
   
  char   arrsz[4][100];  
  std::cout   <<   "char   arrsz[4][100]:"   <<   std::endl;  
  p   =   arrsz;  
  std::cout   <<   "arrsz   =   "   <<   p   <<   std::endl;  
  p++;  
  std::cout   <<   "arrsz   =   "   <<   p   <<   std::endl;  
  }  
   
  输出:  
  ————————————  
  char   (*p)[100]   =   new   char[4][100]:  
  void   fun(T   (*p)[i]):i   =   100  
  char   (*px)[100][100]   =   new   char[4][100][100]:  
  void   fun(T   (*p)[i][j]):i   =   100,   j   =   100  
  char   sz[100]:  
  void   fun(T   (&p)[i]):i   =   100  
  char   arrsz[4][100]:  
  arrsz   =   0012FCC4  
  arrsz   =   0012FD28

NO.32   作者: Kvci)

main()  
  {  
  char   (*p)[100];  
  *p[0]="1";  
  printf("\n\np=%x   *p=%x   p[0]=%x   p+1=%x   *p+1=%x\n",p,*p,p[0],p+1,*p+1);  
   
  }  
  运行结果:  
  p=58b   *p=58b   p[0]=58b   p+1=5ef   *p+1=58c  
  5efH-58bH=64h=100  
 

NO.33   作者: Kvci)

main()  
  {  
  char   (*p)[100][10];  
  *p[0]="1";  
  printf("\n\np=%x   *p=%x   p[0]=%x   p+1=%x   *p+1=%x\n",p,*p,p[0],p+1,*p+1);  
   
  }  
  运行结果:  
  p=58b   *p=58b   p[0]=58b   p+1=973   *p+1=595  
  973H-58bH=3E8H=1000  
 

NO.34   作者: Anikan

我给你们总结一下:  
    int   i;                             i   as   an   int  
    int   *i;                           i   as   a   pointer   to   an   int  
    int   **i;                         i   is   a   pointer   to   a   pointer   to   an   int  
    int   *(*i)();                 i   is   a   pointer   to   a   function   returning   a  
                                                pointer   to   int  
    int   *(*i[])();             i   is   an   array   of   pointers   to   functions  
                                                returning   pointers   to   an   int  
    int   *i[5];                     i   is   an   array   of   5   pointers   to   int  
    int   (*i)[5];                 i   is   a   pointer   to   an   array   of   5   ints  
    int   *i();                       i   is   a   function   returning   a   pointer   to   an   int  
    int   (*i)();                   i   is   a   pointer   to   a   function   returning   int  
    int   *(*(*i)())[5]       i   is   a   pointer   to   a   function   returning   a  
                                                pointer   to   an   array   of   5   pointers   to   an   int  
   
  写英文比较没有歧义,见谅!

NO.35   作者: Kvci)

int   (*i)[5][5]   i   is   ??????????????????

NO.36   作者: megaboy

对于楼主的问题,p并不能说是指向二维或一维的指针,p应该这样描述:  
   
  p是一个指向数组的指针,这个数组的元素是具有100个char类型元素的数组。  
   
  而楼上的i,是一个指向数组的指针,这个数组的元素是具有5x5个int元素的二维数组。

NO.37   作者: ruodeer

int   (*p)[N]   ;   //p是指针,指向一维数组  
  int   *p[N]   ;//   p是数组   ,元素是指针

NO.38   作者: guofu_x

int   (*p)[100];中的p是二维指针,指向一维的数组!

NO.39   作者: xp_zhang

char   (*p)[100];//p是一个指向一维数组的指针,   该数组有100个char型的元素。  
   
  char*   p[100];//p是一维数组名,   该数组有100个元素,每个元素都是CHAR型指针  
   
   
 

NO.40   作者: leaf221

这里分歧点   又出来了一个:char   (*p)[100];//p作为指针是几维的?  
  说是二维的难道是指针的指针?  
  由的程序中  
  //运行结果:  
  //p=58b   *p=58b   p[0]=58b    
  看来是一维指针呀?怎么说是二维指针  
   
  我同意P是指向一维数组的指针

NO.41   作者: huabihan

p是指向一维数组的指针,他一般是个二维数组.

NO.42   作者: bpzl

这没什么可争论的4,要是认为100个char为一个元素那就是一维,  
  要是认为一个char   为一个元素那就是二维,  
  要是一个   bit为一个元素,那就是三维  
  。。。。。。。。。。。。。。。。。。。。


 ·java序列化    »显示摘要«
    摘要: 小弟玩java序列化的时候遇到这样的问题??? import java.io.*; public class aa implements serializable { private string user; private string password; aa(string user,string password) { this.user= user; thi......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE