本文共 1631 字,大约阅读时间需要 5 分钟。
指针是计算机编程中至关重要的概念,它代表内存地址。一个变量的地址就是该变量的指针。简单来说,指针变量存储的是内存中某一位置的地址。
指针变量的定义与用途
指针变量用于存储内存地址,类似于电话本中的电话号码。它可以让程序访问内存中的数据,完成数据的读写操作。指针表示法
int * pointer 表示 pointer 是一个整数类型的指针变量,可以存储其他内存地址。&i 用于获取变量 i 的地址,pointer = &i 表示将 i 的地址赋值给 pointer。scanf 函数scanf 函数用于从标准输入读取数据,但需要注意以下几点:
字符数组存储
scanf 可以直接将字符数组赋值,但不能直接赋值给指针变量。数组与指针的区别
字符串数组的名字其实就是指向数组起始地址的指针。数组名可以直接用于scanf 函数,而指针变量需要事先分配内存。内存分配与使用
使用scanf 赋值字符串指针时,必须先分配内存。这可以通过以下方式实现:char *name = (char *)malloc(100); // 分配100字节内存scanf("%s", name); // 读取并存储字符串free(name); // 释放内存指针变量与内存地址的关系
指针变量存储的是内存地址,但指针本身并不等同于地址。指针变量的可变性
指针变量存储的地址可以随意修改,但修改后的地址可能指向无效内存,导致程序崩溃。函数参数与指针
函数接收指针作为参数时,函数内部会自动将指针转换为相应类型的指针变量。字符串字面量与指针的区别
字符串字面量不是变量,而是直接嵌入到程序中的常量。指针操作的含义
*pointer 表示取出指针变量 pointer 所指的内存地址中的值。不同类型指针的内存分配
int 类型指针会分配4字节内存。char 类型指针会分配1字节内存。(1)输入两个整数并按顺序输出
int a, b;scanf("%d %d", &a, &b);printf("a=%d, b=%d\n", a, b); (2)实现交换两个整数
int x, y;x = 10;y = 20;// 通过指针交换变量int *p = &x;int *q = &y;int temp = *p;*p = *q;*q = temp;printf("x=%d, y=%d\n", x, y); (3)输入三个整数并输出它们的和
int a, b, c;scanf("%d %d %d", &a, &b, &c);printf("总和为:%d\n", a + b + c); malloc.h 与内存分配
malloc 函数
void *malloc(size_t size);
返回值:指向分配内存的起始地址。
calloc 函数
size 的内存块,并初始化为0:void *calloc(size_t count, size_t size);
内存释放
使用free 函数释放分配的内存,并设置指针为 NULL:free(arr);arr = NULL;
scanf 可以直接读取数组,但指针变量需要事先分配内存。双重指针
int **q; // 指向整数类型的指针变量int *p = &a; // p 是指向整数 a 的指针q = &p; // q 是指向整数 a 的地址指针
*q 获取 p 的地址,*p 获取 a 的值。
内存分配与释放
动态分配内存时,确保释放内存以避免内存泄漏。通过以上内容的学习与实践,你应该能够掌握指针的基础概念、scanf 函数的使用规则以及动态内存管理的方法。
转载地址:http://bewzz.baihongyu.com/