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;
- }
好了,今天的分享就到这里,觉得有用的老铁点赞加关注走一波,也希望各位老铁越走越深,成为大佬!!!
文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览48554 人正在系统学习中