房地产门户网站建设,超值的扬中网站建设,wordpress新用户注册邮件,49619浏览器打开数组与指针
数组: - 数组是一种数据结构#xff0c;可以存储固定大小的一组相同类型的元素。在内存中#xff0c;数组的元素是连续存储的。
指针: - 指针是一个变量#xff0c;用于存储内存地址。指针本身占用内存#xff0c;用来指向某个数据的地址。
数组与指针的关系…数组与指针
数组: - 数组是一种数据结构可以存储固定大小的一组相同类型的元素。在内存中数组的元素是连续存储的。
指针: - 指针是一个变量用于存储内存地址。指针本身占用内存用来指向某个数据的地址。
数组与指针的关系: - 数组名本质上是一个指向数组首元素的指针。比如int arr[5] 声明了一个包含5个整数的数组arr是指向arr[0]的指针。 #include stdio.h
int main() { int arr[5] {1, 2, 3, 4, 5}; int *arrPtr arr; // arrPtr指向arr的首元素 printf(Array elements using pointer:\n); for (int i 0; i 5; i) { printf(%d , *(arrPtr i)); // 等价于 arr[i] } printf(\n); return 0; } *解释: - arrPtr 是一个指向 arr 首元素的指针通过 arrPtr i 可以访问数组中第 i 个元素的地址*(arrPtr i) 解引用得到该元素的值。
字符串与指针
字符串: - 字符串是一个以 \0 结尾的字符数组。char str[] Hello; 和 char *str Hello; 是两种声明字符串的方式。
字符串与指针的关系: - 字符数组的首地址就是字符串的地址。可以使用指针遍历字符串。 #include stdio.h
int main() { char str[] Hello, World!; char *strPtr str; printf(String using pointer: %s\n, strPtr); return 0; } 解释: - str 是一个字符数组strPtr 是指向该数组首元素的指针。%s 格式化输出可以直接打印字符串。
指向函数的指针
函数指针: - 函数指针是指向函数的指针可以用来调用函数。函数指针的声明方式是返回类型 (*指针名)(参数类型列表); #include stdio.h
int multiply(int a, int b) { return a * b; }
int main() { int (*funcPtr)(int, int) multiply; // 函数指针funcPtr指向multiply函数 int result funcPtr(2, 3); // 使用函数指针调用multiply printf(Result of multiply using function pointer: %d\n, result); return 0; } 解释: - funcPtr 是一个函数指针指向 multiply 函数。通过 funcPtr(2, 3) 可以调用 multiply 函数并返回结果。
动态内存分配malloc
malloc函数: - malloc 用于在堆上分配指定字节数的内存并返回一个指向该内存的指针。分配的内存未初始化可能包含随机数据。 #include stdio.h #include stdlib.h
int main() { int *dynamicArray (int *)malloc(5 * sizeof(int)); // 分配5个int大小的内存 if (dynamicArray NULL) { printf(Memory allocation failed\n); return 1; // 内存分配失败退出程序 } // 初始化动态分配的数组 for (int i 0; i 5; i) { dynamicArray[i] i * i; // 存储0, 1, 4, 9, 16 } // 打印动态分配的数组 printf(Dynamically allocated array:\n); for (int i 0; i 5; i) { printf(%d , dynamicArray[i]); } printf(\n); // 释放动态分配的内存 free(dynamicArray); return 0; } 解释: - malloc(5 * sizeof(int)) 分配了存储5个整数的内存并返回一个指向该内存的指针。dynamicArray 指向这块内存。 - 检查 dynamicArray 是否为 NULL 是必要的因为内存分配可能失败。 - 使用 free(dynamicArray) 释放分配的内存以防止内存泄漏。
总结
- 数组与指针: 数组名是指向首元素的指针。可以通过指针访问数组元素。 - 字符串与指针: 字符数组名是字符串的地址。可以通过指针遍历和操作字符串。 - 函数指针: 函数指针可以指向函数并用来调用函数。 - 动态内存分配: malloc 分配动态内存free 释放内存。动态内存管理是C语言编程中的一个重要部分。