欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 2025_1_31 C语言中关于数组和指针

2025_1_31 C语言中关于数组和指针

2025/2/8 10:44:23 来源:https://blog.csdn.net/2203_75904043/article/details/145408406  浏览:    关键词:2025_1_31 C语言中关于数组和指针

1.数组作为指针传递

数组作为指针传递可以:

  • 加一个数
  • 减一个数
  • 两个指针相减
  • 自增
  • 自减
int main() {int arr[] = { 1,2,3,4,5,6,7,8,9 };printf("%d\n", arr[0] + 2);printf("%d\n", arr[2] - 2);printf("%d\n", arr[0] + arr[2]);int* p = &arr[0];int* q = &arr[2];printf("%d\n", q - p);//数组的指针可以相减,表示下标之差return 0;
}

在这里插入图片描述

2.*p++

*p++常被用于数组的遍历
他是先返回当前解引用的值,然后自增,指向下一个元素的地址。

void traverse(int* arr, int len) {int* p = arr;while (p < arr + len) {printf("%d\n", *p++);}
}int main(){int a[] = { 1,2,3,4,5,6,7 };traverse(a, 7);return 0;
}

3.指针作为返回值

指针作为返回值一般是高危操作,因为这个指针在函数内被创建,一旦函数被销毁,这个指针就成为了悬空指针,指向了被释放的内存区域。

所以要返回的指针最好被设置为静态的或者动态分配

int* get_max_min(int* arr, int len) {int max = arr[0], min = arr[0];for (int i = 1; i < len; i++) {if (max < arr[i]) {max = arr[i];}}for (int i = 1; i < len; i++) {if (min > arr[i]) {min = arr[i];}}static int result[2];result[0] = max;result[1] = min;return result;
}
int main() {int arr[] = { 1,2,3,4 };int* result = get_max_min(arr, sizeof(arr) / sizeof(arr[0]));printf("%d %d", result[0], result[1]);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com