数组指针到底怎么赋值啊

deng0320 2007-08-26 07:29:37
int a[6];
int (*b)[6]=???? //到底&a还是a !!!!???

还有把数组指针做函数形参时
fun(int (*p)[6]){}

int a[5]
实参是写fun(a),还是fun(&a)我晕了
...全文
1822 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
thesecretblue 2009-02-23
  • 打赏
  • 举报
回复
xuexi!!!
dongpy 2009-02-23
  • 打赏
  • 举报
回复
int a[6];
int (*b)[6]=???? //到底&a还是a !!!!???

还有把数组指针做函数形参时
fun(int (*p)[6]){}

int a[5]
实参是写fun(a),还是fun(&a)我晕了
===================================================
1:int (*b)[6]=&a;

2:把int a[5]改成int a[6],然后fun(&a)。否则编译报错,类型不匹配。
ForestDB 2009-02-20
  • 打赏
  • 举报
回复

int a[6];
int (*b)[6] = &a;

fun(int (*p)[6]) {}

int a[5]; // 最好是a[6]
fun(&a);

int (*p)[6];
p是个指针指向有6个int的数组。
int a[6];
a是个有6个int的数组,取其引用自然用&a。
zhongyonghb 2009-02-20
  • 打赏
  • 举报
回复
应该是&a吧
我看你有戏 2009-02-20
  • 打赏
  • 举报
回复

#include "stdio.h"
#include <stdlib.h>
void main()
{
int (*a)[10];
int b[]={1,2,3,4,5,6,7,8,9,0};
a= &b;

for(int i=0;i<10;i++)
{
printf("%d\t",(*a)[i]);
}
printf("\n");



printf ("**a的地址:0x%x,b的首地址:0x%x\n",*a,b);


printf ("没有修改之前:%d",**a);
(*a)[0]=9;
printf ("修改之后:%d",**a);
}


matrix_chen 2009-02-20
  • 打赏
  • 举报
回复
1.要用int (*a)[5];
2.要用fun(a);
  • 打赏
  • 举报
回复
学习
sanguomi 2009-02-20
  • 打赏
  • 举报
回复
&a 取数组的地址
pengzhixi 2009-02-20
  • 打赏
  • 举报
回复
&a[0]这样也可以
sxbwelcome 2009-02-20
  • 打赏
  • 举报
回复
看这个就明白了
关键在于理解指针的本质:指针就是地址
如 int arr[6]
int *p=arr //把数组的首地址给p,数组名就是首地址

然后通过指针就可以间接访问数组元素(如arr[3])了
p[3] 或 *(p+3)

至于另外一个问题就看你函数参数到底是传递整个数组还是传递一个元素的值
传递整个数组:fun(arr)//也就是把数组的首地址传递给形参,数组名已经是地址了,就不要使用&arr了
传递一个元素的值:fun(arr[3])//将arr[3]的值传递给一个整型形参
iamliadai 2007-08-29
  • 打赏
  • 举报
回复
&a 使a的档次升高了,品味不同了,虽然值都一样
lynnideal 2007-08-29
  • 打赏
  • 举报
回复
把数组指针做函数形参时
fun(int (*p)[6]){}

int a[6]
实参是写fun(a),还是fun(&a)我晕了


应该是fun(&a)
约翰尼 2007-08-29
  • 打赏
  • 举报
回复
int a[6];
int (*b)[6]=???? //到底&a还是a !!!!???
_____________________________________________
是a 。int (*b)[6]是表示 b是一个指针,指向一个含有6个整形变量大小的空间。
数组名是一个指针,所以a是一个指针。

还有把数组指针做函数形参时
fun(int (*p)[6]){}

int a[5]
实参是写fun(a),还是fun(&a)我晕了
____________________________________
因该是a[6]吧?是fun(a),解释同上。
蜜_Lumia 2007-08-29
  • 打赏
  • 举报
回复
我好象来晚了啊
gfxiang 2007-08-26
  • 打赏
  • 举报
回复
int a[6];
int (*p)[6] = &a; // 这样是可以赋值的
后面取值必须是p[0][i];
如果是int *p=a;取值就是p[i]
deng0320 2007-08-26
  • 打赏
  • 举报
回复
int main()
{
int arr[3];
int (*ptr)[3] = &arr;
char *strarr[2] = {"abc", "def"};
char *(*pstr)[2] = &strarr;
return 0
}


int a[2][3];
void funcn(int (*p)[2][3])

int main()
{
funcn(&a);
return 0
}
---------------我看到个例子,这样的???
deng0320 2007-08-26
  • 打赏
  • 举报
回复
取数组名的地址。
-----------------------------
&a ???
BluntBlade 2007-08-26
  • 打赏
  • 举报
回复
取数组名的地址。
gfxiang 2007-08-26
  • 打赏
  • 举报
回复
int a[6]
int *pa = a // 指向一维数组的指针

int b[5][6];
int (*pb)[6] = b; // 指向int[6]数组的指针, 即二维数组指针

void f1(int *p);
void f2(int (*p)[6]);
f1(a);
f2(b);
deng0320 2007-08-26
  • 打赏
  • 举报
回复
把数组指针做函数形参时
fun(int (*p)[6]){}

int a[6]
实参是写fun(a),还是fun(&a)我晕了

应该这样写,写错一个6写5了
加载更多回复(2)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧