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;

}

C语言指针详解:从基础声明到动态内存分配与链表实现,轻松掌握指针核心用法

// 正确的方式 - 指针传递 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;

}

C语言指针详解:从基础声明到动态内存分配与链表实现,轻松掌握指针核心用法

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

分享:

扫一扫在手机阅读、分享本文

最近发表