C语言:不能将“int **”类型的值分配到“int”类型实体
发布网友
发布时间:2023-10-05 22:46
我来回答
共4个回答
热心网友
时间:2024-11-06 02:51
这是一条编译错误提示。
代表在代码中,把一个int**类型的值,赋值给了int类型的变量。
类似于
int v;
int *p = &v;
然后做了
v = &p;
这样的操作。
类似操作,大多数是误写,本来要写
p=&v;
但是写成了
v=&p;
针对修改即可。
如果确定要把int**值赋值给int,可以采用
v=(int)&p;
的方式。
不过需要注意的是,在16位和32位系统中,可以完整保存地址值,但是在64位系统中,int**占8字节,而int占4字节,该操作会导致信息丢失。
热心网友
时间:2024-11-06 02:52
#include<stdio.h>
#include<stdlib.h>
//void maxnum(int n,int *p[]) //这句要改成下边这个样子。函数返回的应该是数组最大值
int maxnum(int n,int *p)
{
int max;
int i,j,temp;
max=*p; //我增加的,先保存一下最大值。
for(i=0;i<n;i++) //修改了一下。
// for(j=i+1;j<n;j++) //这句要去掉,因为是一维数组,没必要两重循环
{
if(*(p+i)>max)
{
// temp=p+i;
// p+i=p+j;
// p+j=temp;
max=*(p+i); //改成这个样子
}
}
return max; //我增加的
}
int main()
{
int num[50];
int i,j,n,*p;
printf("How many number you will input:");
scanf("%d",&n);
//这儿要加上一个判断,如果用户输入100,比你预留的50个空间大怎么办?
if (i<1||i>50) {
n=50;
}
for(i=0;i<n;i++)
scanf("%d",&num[i]);
// p=num[0]; //改成下边的样子
p=num;
// maxnum(int n,int *p); //去掉
// printf("%d",num[i]); //去掉
// printf("The max number is:%d",num[n-1]; //改成如下样子
printf("The max number is:%d",maxnum(n,p));
system("pause");
}
追问
这个怎么办?还有为什么要让max=*p?还有为什么在主函数中可以直接写p=num,而在maxnum函数就都必须写*号?
追答//上边那段程序在CB下编译没有问题,下边这段程序在gcc上编译没有问题。
//你用的是什么编译器?
//从提示上来看,明显是参数类型不一致,你是完全复制我的程序吗?
#include<stdio.h>
#include<stdlib.h>
//void maxnum(int n,int *p[]) //这句要改成下边这个样子。函数返回的应该是数组最大值
int maxnum(int n,int *p)
{
int max;
int i,j,temp;
max=*p; //我增加的,先保存一下最大值。
for(i=0;i<n;i++) //修改了一下。
// for(j=i+1;j<n;j++) //这句要去掉,因为是一维数组,没必要两重循环
{
if(*(p+i)>max)
{
// temp=p+i;
// p+i=p+j;
// p+j=temp;
max=*(p+i); //改成这个样子
}
}
return max; //我增加的
}
int main()
{
int num[50];
int i,j,n,*p;
printf("How many number you will input:");
scanf("%d",&n);
//这儿要加上一个判断,如果用户输入100,比你预留的50个空间大怎么办?
if (n<1||n>50) { //原程序这儿有一个错误
n=50;
}
for(i=0;i<n;i++)
scanf("%d",&num[i]);
// p=num[0]; //改成下边的样子
p=num;
// maxnum(int n,int *p); //去掉
// printf("%d",num[i]); //去掉
// printf("The max number is:%d",num[n-1]; //改成如下样子
printf("The max number is:%d",maxnum(n,p));
system("pause");
}
热心网友
时间:2024-11-06 02:52
#include <stdio.h>
int maxnum(int n, int *p)
{
int i, max = *p;
for (i = 0; i < n; i++)
max = max > *(p+i) ? max : *(p+i);
return max;
}
int main(int argc, char *argv[])
{
int num[50];
int i, j, n, *p;
printf("how many numbers you will input:");
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &num[i]);
p = num;
printf("The max number is:%d\n", maxnum(n, p));
//system("pause");
return 0;
}
热心网友
时间:2024-11-06 02:53
错的有点多啊
int maxnum(int n, int*p)
{
int max, i;
for(i=1, max=p[0];i<n;i++)
if(p[i]>max) max=p[i];
return(max);
}
void main(void)
{
...
printf("The max number is:%d", maxnum(n, num);
system("pause");
}