表达式必须包含指向对象的指针类型,但他具有“int“?

   xdm,今天在写逆序函数的时候遇到了这样一个问题——表达式必须包含指向对象的指针类型,但他具有"int"?原来问题出在这里...

   首先来看看题目

创建一个整型数组,完成对数组的操作

     1.实现函数init()初始化数组为全0
     2.实现print()打印数组的每个元素
     3.实现reverse()函数完成数组元素的逆置

  就在第三个函数的时候,我遇到了以下这样的问题

表达式必须包含指向对象的指针类型,但他具有“int“?_第1张图片

  一个简单的逆序函数逻辑没出错,那一定是哪里输入错误,通过警告和Fn+F10以及调试窗口排查终于找到了问题所在

   没错,就是在形参接受实参的时候少写了一个【】导致的,具体原因是因为arr数组本质是一个指针类型,指向的是首元素的地址,如果用int 来接收显然不合适,以至于在引用下列定义的int类型的变量时候产生错误——表达式必须包含指向对象的指针类型,但他具有类型"int",解决的办法也很简单,代码如下

#define  _CRT_SECURE_NO_WARNINGS 1
#include
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;
}

  好了,今天的分享就到这里,觉得有用的老铁点赞加关注走一波,也希望各位老铁越走越深,成为大佬!!!

你可能感兴趣的:(C语言学习之路,c语言)