/*
计算数组元素的和(指针)
*/
#include<stdio.h>
int sum(int* a, int n)
{
int ans = 0;
for(int i = 0; i < n; i++)
ans += a[i];
return ans;
}
int main()
{
int a[] = {
1,2,3,4,5,6,7,8,9,10};
printf("%d\n", sum(a+1,3)); // 指针 a+1 指向 a[1] 3表示元素的个数
printf("%d\n", sum(a, 4)); // 指针 a 指向 a[0] 4表示元素的个数
return 0;
}
计算左闭右开区间内数组的元素和(指针的两种写法)
int sum(int* begin, int* end)
{
int n = end - begin;
int ans = 0;
for(int i = 0; i < n; i++)
ans += begin[i];
return ans;
}
int sum(int* begin, int* end)
{
int *p = begin;
int ans = 0;
for(int *p = begin; p != end; p++)
ans += *p;
return ans;
}
声明了一个长度为10的数组,则它的元素之和就是 sum(a,a+10);
若要计算a[i],a[i+1]…a[j],则需要调用 sum(a+i,a+j+1);
/*
指针交换变量
*/
/*
指针交换变量
*/
用函数交换变量
#include<stdio.h>
viod swap(int* a, int* b)
{
int t = *a;
*a = *b;
*b = t;
}
int main
{
int a = 3, b = 4;
swap(&a, &b);
printf("%d %d\n", a, b);
return 0;
}
****
#include<stdio,h>
void swap(int* &p1, int* &p2) {
int *temp = p1;
p1 = p2;
p2 = temp;
}
int main
{
int a = 3, b = 4;
int *p1 = &a, *p2 = &b;
swap(p1, p2)
printf("a = %d, b = %d\n", *p1, *p2);
return 0;
}