C语言代码解释:交换变量、动态内存分配、数组传递和函数返回值
- 这段代码定义了一个名为
swap的函数,用于交换两个整型变量的值。函数使用指针传递变量的地址,通过指针操作来实现变量值的交换。在main函数中,定义了两个整型变量a和b,并分别赋值为5和10。接着,调用swap函数,并将a和b的地址传入函数中,实现变量值的交换。最后输出交换后的结果。
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 5, b = 10;
printf('before swap: a = %d, b = %d\n', a, b);
swap(&a, &b);
printf('after swap: a = %d, b = %d\n', a, b);
return 0;
}
- 这段代码使用动态内存分配函数
malloc,它可以在程序运行时动态地分配一定大小的内存空间。代码中定义了一个指针变量p,通过malloc函数分配了4个字节的内存空间,并将指针p指向该空间。然后将10赋值给该空间中的整型变量,并输出这个变量的值。最后使用free函数释放了动态分配的内存空间。
int main() {
int *p;
p = (int *)malloc(sizeof(int)); // 分配4个字节的内存空间
*p = 10;
printf('%d\n', *p);
free(p); // 释放内存空间
return 0;
}
- 这段代码定义了一个名为
printArray的函数,用于打印一个整型数组。函数使用指针传递数组的地址,通过指针操作来访问数组元素。在main函数中,定义了一个整型数组arr,并初始化了数组的值。接着,计算出数组的长度,调用printArray函数并将数组的地址和长度传入函数中,实现数组的打印。
void printArray(int *arr, int len) {
for (int i = 0; i < len; i++) {
printf('%d ', *(arr + i));
}
printf('\n');
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(int);
printArray(arr, len);
return 0;
}
- 这段代码定义了一个名为
createArray的函数,用于创建一个长度为len的整型数组,并将数组中的元素依次赋值为0到len-1。函数使用动态内存分配函数malloc,在函数中分配了一定大小的内存空间,并将指针arr指向该空间。然后使用循环依次将数组中的元素赋值为0到len-1,最后返回这个数组的指针。在main函数中,调用createArray函数,并将返回的指针赋值给指针变量p,然后使用循环输出这个数组的值。最后使用free函数释放了动态分配的内存空间。
int *createArray(int len) {
int *arr = (int *)malloc(sizeof(int) * len);
for (int i = 0; i < len; i++) {
*(arr + i) = i;
}
return arr;
}
int main() {
int *p = createArray(5);
for (int i = 0; i < 5; i++) {
printf('%d ', *(p + i));
}
printf('\n');
free(p);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/mGER 著作权归作者所有。请勿转载和采集!