首页 > 试题广场 >

上下文及头文件均正常的情况下,以下程序的输出结果是?

[单选题]
上下文及头文件均正常的情况下,以下程序的输出结果是________。
void fut(int**s,int p[2][3]) {
    **s=p[1][1];
}
void main( ) {
    int a[2][3]={1,3,5,7,9,11},*p;
    p=(int*)malloc(sizeof(int));
    fut(&p,a);
    cout<< *p;
}
  • 7
  • 9
  • 1
  • 11
好吧  被自己蠢到了。a[1][1]。。。当成a[1][0]了。
发表于 2016-04-21 15:02:00 回复(13)
 **s=a[1][1]; ————> *s=p; *(*s)=a[1][1]; 就是a[1][1]的值.
发表于 2016-08-01 22:58:02 回复(1)
这题的重点不应该是引用以及二级指针么?

为什么都拉着a[1][1]不放。
发表于 2016-06-04 15:56:26 回复(1)
随便写点,不知对不对
【1】int a[3][4] 定义一个三行四列的数组
【2】a[0][0] 是左上角的第一个元素
【3】
int i=1;  
int *p= &i;
int **q=&p;
int ***w=&q;//w是int ***类型,只能存放 int**类型变量的地址;
。、、、、、、、、、、、、、、、、、、、、、、
【4】
    int i = 100;
    int* p = &i;
    int** q = &p;
    int*** w = &q;//w是int ***类型,只能存放 int**类型变量的地址;
    printf("%d\n",***w);
输出的使100;
【5】
voidfut(int**s,intp[2][3]) // 数组能存放地址么?
{
    **s=p[1][1];
}
voidmain( )
 {
    inta[2][3]={1,3,5,7,9,11},*p;
    p=(int*)malloc(sizeof(int));
    fut(&p,a);
    cout<< *p;
}
int *p;
p=(int*)malloc(sizeof(int));//p取了某一块地址;
**s=&p;//**s指上面p取得那个地址
**s=p[1][1];//把a的第二行第二列的9的地址给了s;
所以这里**s就是 ;

编辑于 2019-09-12 11:33:18 回复(0)
fut函数有两个形参,一个二级指针,和一个二维数组。函数作用是把二级指针双重解引用也就是一级指针指向[1][1]。实参传递了一级指针的地址,也就是把p指向[1][1]。所以解引用之后的值为9
发表于 2019-03-08 18:22:59 回复(0)
是a[1][1]呀不是a[0][0],蠢死自己了

发表于 2017-06-13 23:28:57 回复(0)
类型说明符 数组名[ 常量表达式1][常量表达式2]…;
其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。
例如:
int a[3][4]; 说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型
编辑于 2016-02-20 18:44:04 回复(0)
原来a[1][1]是9,a[0][0]才是1啊。。生气。。。。。。。
发表于 2015-09-09 20:57:43 回复(2)
就是a[1][1]
发表于 2015-09-06 10:29:21 回复(0)
1,3,5 7,9(1.1),11
发表于 2022-01-11 05:35:48 回复(0)
fut里decltype(s)==decltype(p)? 数组会否退化为指针?
发表于 2021-11-02 08:06:00 回复(0)
p是一片空间的地址,那片空间只存了一个数据9
发表于 2020-12-22 21:25:52 回复(0)
p是一个指向某新malloc的内存的int型指针,&p也就是这块int型内存的二级指针了。&p传输给fut是实参传递,所以这块内存被赋值为a[1][1].
发表于 2020-08-24 14:14:29 回复(0)
int *s为传的是地址, int **s传的是值 不要误以为是地址的地址
发表于 2018-10-26 16:48:38 回复(0)
我想知道*p明明是一维数组,而fut函数定义的**s是二维数组,这样不会报错吗?
发表于 2018-09-29 12:10:28 回复(0)
1
2
3
4
5
6
7
int *p;
p = (int*)malloc(sizeof(int) * 128);
//分配128个(可根据实际需要替换该数值)整型存储单元,
//并将这128个连续的整型存储单元的首地址存储到指针变量p中
double *pd = (double*)malloc(sizeof(double) * 12);
//分配12个double型存储单元,
//并将首地址存储到指针变量pd中
第一、malloc 函数返回的是 void * 类型。
对于C++,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。
所以必须通过 (int *) 来将强制转换。而对于C,没有这个要求,但为了使C程序更方便的移植到C++中来,建议养成强制转换的习惯。
第二、函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小。
编辑于 2017-08-22 09:24:46 回复(0)