这是课件ppt,我在电脑上敲了一遍但有标黄的,但是能出正确结果,请问代码需要改动吗
虽然这段代码能正常运行,并且输出1,但是其中的函数fun4存在问题。在函数fun4中,参数p是一个指向指针的指针,但是在函数中却将其赋值给了一个指向数组的指针q。这样会导致q指向的地址与p指向的地址不同,从而无法正确访问数组a中的元素。正确的做法是将函数fun4的参数改为int (p)[2],这样p就是一个指向数组的指针,可以直接赋值给q
如果对你有所帮助的话,请给我一个采纳哦,谢谢啦
有标黄只是警告,只要能运行就说明没问题,放心大胆的用吧!
如果实在不放心,我给你解释一下你这个问题:
这个警告表示您正在尝试将一个指针类型不兼容的指针赋值给另一个指针。
例如:
int *p1; // 指向int的指针
char *p2; // 指向char的指针
p1 = p2; // 错误,指针类型不兼容,会产生warning
这里,p1是指向int的指针,而p2是指向char的指针,两者的指针类型不同,所以不能相互赋值,这会产生指针类型不兼容的警告。
要修复这个警告,可以:
void *p1;
void *p2;
p1 = p2; // ok,指针类型兼容
char *p3;
p1 = (void *)p3; // ok,进行void* 类型转换
int *p1, x;
char *p2, y;
*p1 = x; // ok,赋值指针操作的对象
*p2 = y;
int *p1, *p2;
int *mem = malloc(sizeof(int));
p1 = mem; // ok,指向同一动态内存
p2 = mem;