C语言中 定义一个int a[10]数组以及 指针组(*pre)[10],如何把a组所有的地址赋

如题所述

一、你的题目不完整,先把题目补充完整,是不是下面这样(【】内是补充内容):
“C语言中 定义一个int a[10]数组以及 指针组(*pre)[10],如何把a组所有的地址赋【值给数组pre? 】”
如果不是,请楼主补充题目。
二、不管补充的内容对不对,题目前面的内容已经出现错误了!
因为用int (*pre) [10];定义的变量pre,并不是一个含有10个元素的指针数组,而是一个指向一维数组的指针,其本质是一个指针!所以原题目中的叙述“指针组(*pre)[10]”是错误的。
要想定义一个指针数组,应该用:int *pre[10];。注意他们的区别,对,多了一对小括号导致错误。
三、把原题目改为“C语言中 定义一个int a[10]数组以及 指针数组*pre[10],如何把a组所有的地址赋值给数组pre? ”,则所运用的语句是:
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *pre[10],i;
for(i=0;i<10;i++)
pre[i]=&a[i];
}
如果有什么问题请留言。追问

嗯,这是一个指向一维数组的指针,那么要怎么给这个指针赋值?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-14
从名字上听起来这个int (*p)[n]是个指针,那么肯定跟int *p[n]是有区别的

下面,先看看我的练习代码:

#include <stdio.h>

#include <iostream>

#include <string.h>

using namespace std;

#define LEN sizeof(a)/sizeof(int)

int main()

{

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

int (*p)[LEN];

p=&a;

printf("a:%d\n",a);

printf("&a:%d\n",&a);

int i;

for(i=0;i<LEN;i++)

printf("%d \t",*(*p+i));

return 0;

}

执行结果如下:



大家看,这个例子也是把数组a的元素依次打印出来,我有一个问题留给大家:

既然 a和&a的地址一样,为何只能p=&a;这样赋值,而不可以p=a呢?

答案:

 a代表一个整形的地址   &a 代表的是数组长度为4的整形的 首地址 虽然地址是同一个  ,但是数据类型不同,所以赋值会出错本回答被提问者和网友采纳
第2个回答  2019-06-14
应该是int*pre[10]
pre[0]=&a[0]
pre[1]=&a[1]
……
相似回答