1、交换两个整数的值
编写一个函数,使用指针交换两个整数的值。
#include <stdio.h>
// 交换两个整数的值的函数
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 5, y = 10;
printf("Before swap: x = %d, y = %d\n", x, y);
// 调用交换函数
swap(&x, &y);
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
2、数组元素求和
编写一个函数,使用指针计算一个整数数组的所有元素的和。
#include <stdio.h>
// 计算数组元素和的函数
int array_sum(int *arr, int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += *(arr + i);
}
return sum;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
int sum = array_sum(arr, size);
printf("Sum of array elements: %d\n", sum);
return 0;
}
3、字符串长度计算
编写一个函数,使用指针计算给定字符串的长度,不使用标准库函数 strlen
。
#include <stdio.h>
// 计算字符串长度的函数
int string_length(char *str) {
int length = 0;
while (*str != '\0') {
length++;
str++;
}
return length;
}
int main() {
char str[] = "Hello, World!";
int length = string_length(str);
printf("Length of the string: %d\n", length);
return 0;
}
4、动态内存分配与释放
编写一个程序,使用指针动态分配内存存储一个整数数组,并释放内存。
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
printf("Enter the number of elements: ");
scanf("%d", &n);
// 动态分配内存
int *arr = (int *)malloc(n * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed\n");
return 1;
}
// 输入数组元素
printf("Enter %d integers:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 输出数组元素
printf("Array elements are:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 释放内存
free(arr);
return 0;
}
5、字符串复制
编写一个函数,使用指针复制一个字符串到另一个字符串,不使用标准库函数 strcpy
。
#include <stdio.h>
// 字符串复制函数
void string_copy(char *dest, const char *src) {
while (*src != '\0') {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
}
int main() {
char src[] = "Hello, World!";
char dest[50];
// 调用字符串复制函数
string_copy(dest, src);
printf("Source string: %s\n", src);
printf("Destination string: %s\n", dest);
return 0;
}