Chinaunix

标题: 二维数组指针? [打印本页]

作者: ukin50    时间: 2006-03-09 10:02
标题: 二维数组指针?
main(){
  char arr[8][128];
  func(arr);
}
func(char p[8][128]){
  strcpy(p[0], "any");
}

我这时传递的arr是指针么?
func函数的栈上有没有创建一个新的char[8][128]?
作者: tyc611    时间: 2006-03-09 10:23
准确的说,arr是一个地址,而func中参数p为一个字符串指针数组(分配8个指针的空间)
作者: openX    时间: 2006-03-09 11:25
是的,arr是以指针传递的,应该是第一个元素的地址,func函数的栈尚不会再创建一个新的数组。
作者: ukin50    时间: 2006-03-09 13:51
如果我想显性的用一个指针指向这个数组,应该怎么声明呢?

我知道可以这样
  char (*p)[8][128] = &arr;
能不能直接声明一个指针p=arr?
作者: soul_of_moon    时间: 2006-03-09 14:01
原帖由 ukin50 于 2006-3-9 10:02 发表
main(){
  char arr[8][128];
  func(arr);
}
func(char p[8][128]){
  strcpy(p[0], "any");
}

我这时传递的arr是指针么?
func函数的栈上有没有创建一个新的char[8][128]?

第二维是不可见的
作者: ukin50    时间: 2006-03-09 14:23
原帖由 soul_of_moon 于 2006-3-9 15:01 发表

第二维是不可见的


是不就是说不能这样:
什么什么*p=arr
作者: soul_of_moon    时间: 2006-03-09 15:12
原帖由 ukin50 于 2006-3-9 14:23 发表


是不就是说不能这样:
什么什么*p=arr

我的意思是形参是不知道自己所对应的实参是2维还是1维的
作者: saintdragon    时间: 2006-03-09 16:50
申明为(*p)[128]
作者: ivhb    时间: 2006-03-09 19:51
char (*p[8])[128] ??
作者: connet    时间: 2006-03-09 20:15
标题: 用 func( char **ptr, int row,int col) 好些吧?
用 func( char **ptr, int row,int col) 定义 好些吧?
作者: abc3214    时间: 2012-08-25 15:31
不知道自己所对应的实参是2维还是1维
作者: lzj123    时间: 2012-08-25 15:44
参数p是一个指向一维数组的指针,p指向arr[0],p+1指向arr[1]
作者: lzj123    时间: 2012-08-25 15:47
char (*p)[128]
回复 9# ivhb


   
作者: cdtits    时间: 2012-08-25 17:57
随便一本 c 语言教程都有讲的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2