深圳幻海软件技术有限公司 欢迎您!

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

2023-06-29

  xdm,今天在写逆序函数的时候遇到了这样一个问题——表达式必须包含指向对象的指针类型,但他具有"int"?原来问题出在这里...  首先来看看题目创建一个整型数组,完成对数组的操作1.实现函数init()初始化数组为全02.实现print()打印数组的每个

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

   首先来看看题目

  1. 创建一个整型数组,完成对数组的操作
  2. 1.实现函数init()初始化数组为全0
  3. 2.实现print()打印数组的每个元素
  4. 3.实现reverse()函数完成数组元素的逆置

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

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

 

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

  1. #define _CRT_SECURE_NO_WARNINGS 1
  2. #include<stdio.h>
  3. void reverse(int arr[], int sz)
  4. {
  5. int i = 0;
  6. int left = 0;
  7. int right = sz-1;
  8. for (i = 0; i < sz / 2; i++)
  9. {
  10. int tmp = arr[left];
  11. arr[left] = arr[right];
  12. arr[right] = tmp;
  13. left++;
  14. right--;
  15. if (arr[left] == arr[right])
  16. break;
  17. }
  18. }
  19. void print(int arr[],int sz)
  20. {
  21. int i = 0;
  22. for (i = 0; i < sz; i++)
  23. {
  24. printf("%d ", arr[i]);
  25. }
  26. }
  27. int main()
  28. {
  29. int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  30. int sz = sizeof(arr) / sizeof(arr[0]);
  31. reverse(arr,sz);
  32. print(arr, sz);
  33. return 0;
  34. }

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

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览48554 人正在系统学习中