C语言指针详解:内存地址、变量地址与指针变量

需积分: 16 2 下载量 77 浏览量 更新于2024-07-14 收藏 181KB PPT 举报
"C语言指针详解-主函数main()示例" 在C语言中,指针是一个至关重要的概念,它允许我们直接操作内存地址,从而提高程序的效率和灵活性。`main()`函数是每个C程序的入口点,通常用于接收用户输入并执行相应的操作。在这个例子中,`main()`函数接收三个整数,并进行排序。 9.1 指针和指针变量的概念 指针是存储内存地址的变量。内存地址是计算机内存中每个存储单元的唯一标识。当我们在程序中声明一个变量时,系统会为它分配一段内存空间,这个空间的地址就是变量的地址。例如,变量`num`的地址是3000,意味着它的值存储在内存的3000和3001位置。 9.2 指针变量的定义与应用 指针变量通过在变量类型前加上星号`*`来定义,如`int *p;`定义了一个指向整型变量的指针`p`。指针变量可以用来存储其他变量的地址,通过解引用操作`*`,我们可以访问存储在指针指向地址的值。例如,`*p = 5;`将5赋值给`p`所指向的内存地址。 9.3 数组的指针和指向数组的指针变量 数组名本身就是数组首元素的地址。因此,一个指向数组的指针可以用来遍历整个数组。在排序代码中,如果我们将数组的地址传递给`exchange()`函数,它可以修改数组元素的值,实现元素交换。 9.4 字符串的指针和指向字符串的指针变量 在C语言中,字符串是以字符数组的形式存在的,通常以空字符`\0`结束。一个指向字符串的指针实际上是指向字符串首字符的地址。例如,`char *str = "Hello";`定义了一个指向字符串"Hello"的指针。 9.5 返回指针值的函数 函数可以返回一个指针,这使得函数能够返回动态分配的内存块或者结构体等复杂类型的地址。例如,`int *createArray(int size)`可以创建一个大小为`size`的整数数组,并返回其首地址。 9.6 指针数组与主函数`main()`的形参 指针数组是一组指针的集合,每个元素都是一个指针。在`main()`函数中,可以使用指针数组作为参数来接收命令行参数,这样可以灵活处理多个输入。 9.7 函数的指针和指向函数的指针变量 函数指针是一个可以存储函数地址的变量。通过这种方式,我们可以将函数作为参数传递给其他函数,或者在运行时动态调用函数。例如,`void (*func_ptr)(int)`定义了一个接受整数参数并返回无类型值的函数指针。 回到给定的`main()`函数,它首先通过`scanf()`获取三个整数`num1`、`num2`和`num3`的值,然后通过比较和`exchange()`函数对它们进行排序,最后用`printf()`打印排序后的结果。在这个过程中,指针被用来传递变量的地址,以便在`exchange()`函数中交换它们的值,体现了指针在C语言中的强大功能。