C语言指针详解:从基础声明到动态内存分配与链表实现,轻松掌握指针核心用法
int ptr; // 声明一个指向整型的指针 char ch_ptr; // 声明一个指向字符的指针 float *f_ptr; // 声明一个指向浮点数的指针
int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr; // 不需要&arr,因为arr本身就像指针
printf("arr[0] = %d\n", arr[0]); // 输出1 printf("ptr = %d\n", ptr); // 输出1 printf("arr = %d\n", arr); // 输出1 - 数组名可以解引用!
// 错误的方式 - 值传递 void swap_wrong(int a, int b) {
int temp = a;
a = b;
b = temp;
}

// 正确的方式 - 指针传递 void swap_right(int a, int b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
swap_wrong(x, y);
printf("x=%d, y=%d\n", x, y); // 还是10, 20
swap_right(&x, &y);
printf("x=%d, y=%d\n", x, y); // 变成20, 10
return 0;
}
include <stdlib.h>
int main() {
int *arr;
int size = 10;
// 分配能够存放10个整数的内存
arr = (int*)malloc(size * sizeof(int));
if(arr == NULL) {
printf("内存分配失败\n");
return -1;
}
// 使用分配的内存
for(int i = 0; i < size; i++) {
arr[i] = i * 2;
}
// 不要忘记释放!
free(arr);
return 0;
}

typedef struct Node {
int data;
struct Node *next; // 指向下一个节点的指针
} Node;
// 创建新节点 Node* create_node(int value) {
Node *new_node = (Node*)malloc(sizeof(Node));
if(new_node != NULL) {
new_node->data = value;
new_node->next = NULL;
}
return new_node;
}
免责声明:本网站部分内容由用户自行上传,若侵犯了您的权益,请联系我们处理,谢谢!联系QQ:2760375052







