二维数组 和 指针

   int a[2][3] = {{1,2,3},{4,5,6}};

 int* p = a[0][0];    //如果int*p = a ;会报警告,因为p相当于是一个列指针a 相当于是一个行指针。

   int* p = &a[0][0];  //&a[0][0]是列指针;  

   for(int i =0 ;i< n;i++)

 {

    printf("%d:\n",*(p+i));  // 1,2,3,4,5,6

 }

  

  int (*q)[3] = a;                   //a 是行指针   int (*q)[3]   q指向int[3]类型的变量

  //可以把a看成是拥有6个int的常量,而p ,q 是指向 列,行的变量

  void func(int p[2][3],int m,int n)

  {

    printf("--%d",sizeof(p)); //  64位的系统: --8  不是 8*6

  }       

 

  

=============================================

char str[] = "helloworld";

printf("%d\n:%d\n",sizeof(str),strlen(str));   // 11:10

str = "welcome"   //F 千万不能这样 应该用strcppy(str,"welcome") ,str数组 常量

 

 

char* str = "helloworld"

printf("%d\n:%d\n",sizeof(str),strlen(str));   // 64位   8:10,

strcpy(str,“welcome”) //不要这样,str 指向一个常量不能覆盖

 

posted on 2013-11-27 01:01  大大世界  阅读(163)  评论(0编辑  收藏  举报

导航