"高级语言程序设计第6章指针PPT教程:从初识到灵活应用"

0 下载量 44 浏览量 更新于2024-01-30 收藏 2.11MB PPTX 举报
0x0037b000a00 其中,0x表示十六进制数,0037b000a00为变量a的内存地址。 6.1.2指针的定义和基本操作 指针(Pointer)是用来存放地址的变量。 指针变量必须事先声明指明所指向的数据类型。 指针变量的声明形式为:数据类型 *指针变量名; 例如:int *p; 表示声明了一个指向int类型的指针变量p。 指针的基本操作包括: 取地址操作符(&):取出变量的地址。 例如:&a,表示取变量a的地址。 赋值操作符(=):将某个地址赋给一个指针变量。 例如:p = &a,表示将变量a的地址赋给指针变量p。 取指针所指的值操作符(*):获取指针所指向的地址的值。 例如:*p,表示获取指针p所指向的地址的值。 6.2指针和函数 指针和函数的结合使用具有很高的灵活性和效率。 指针可以作为函数的参数传递,可以在函数内部修改指针所指向的地址的值。 函数可以返回指针作为结果。 6.2.1指针作为函数参数 指针作为函数参数时,可以实现对函数外部变量的修改。 例如: void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } 在调用swap函数时,传入的是两个变量的地址,通过指针操作可以实现对变量的交换。 6.2.2指针作为函数返回值 函数可以返回指针作为结果,可以实现函数内部动态分配内存并返回所指向的地址。 例如: int *allocateArray(int size) { int *arr; arr = (int*)malloc(size * sizeof(int)); return arr; } 在调用allocateArray函数时,函数内部通过malloc函数分配一片动态内存,并返回该内存的首地址。 6.3指针和数组 指针和数组之间有着密切的关系,指针能够以数组的形式操作和访问数据。 6.3.1指针与数组的关系 数组名可以视为指向数组首元素的指针。 例如: int arr[5]; int *p; p = arr; 在上述代码中,p指向了数组arr的首元素。 通过指针可以访问数组的各个元素。 例如: int arr[5] = {1, 2, 3, 4, 5}; int *p; p = arr; for(int i = 0; i < 5; i++) { printf("%d ", *(p+i)); } 通过指针p加上偏移量i可以访问数组的各个元素。 6.3.2指针和多维数组 指针和多维数组之间的关系可以通过指针的指针实现。 例如: int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int **p; p = (int**)malloc(3 * sizeof(int*)); for(int i = 0; i < 3; i++) { p[i] = (int*)malloc(3 * sizeof(int)); } 在上述代码中,通过指针的指针来表示多维数组arr,并动态分配内存。 6.4本章小结 本章介绍了指针的概念、定义和基本操作。 指针和函数的结合使用可以实现对变量的修改和返回动态分配内存的地址。 指针和数组之间有着密切的关系,可以通过指针访问数组的各个元素。 因此,掌握指针的概念和基本操作对于高级语言程序设计是非常重要的。