xdm,今天在写逆序函数的时候遇到了这样一个问题——表达式必须包含指向对象的指针类型,但他具有"int"?原来问题出在这里...
首先来看看题目
创建一个整型数组,完成对数组的操作
1.实现函数init()初始化数组为全0
2.实现print()打印数组的每个元素
3.实现reverse()函数完成数组元素的逆置
就在第三个函数的时候,我遇到了以下这样的问题
一个简单的逆序函数逻辑没出错,那一定是哪里输入错误,通过警告和Fn+F10以及调试窗口排查终于找到了问题所在
没错,就是在形参接受实参的时候少写了一个【】导致的,具体原因是因为arr数组本质是一个指针类型,指向的是首元素的地址,如果用int 来接收显然不合适,以至于在引用下列定义的int类型的变量时候产生错误——表达式必须包含指向对象的指针类型,但他具有类型"int",解决的办法也很简单,代码如下
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void reverse(int arr[], int sz)
{
int i = 0;
int left = 0;
int right = sz-1;
for (i = 0; i < sz / 2; i++)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
if (arr[left] == arr[right])
break;
}
}
void print(int arr[],int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);
reverse(arr,sz);
print(arr, sz);
return 0;
}
好了,今天的分享就到这里,觉得有用的老铁点赞加关注走一波,也希望各位老铁越走越深,成为大佬!!!