黑马程序员-C语言-指针
2015-12-25 19:55
302 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一
一 指针的概念及定义方法
1.指针变量: 用来存放地址的变量
2.指针: 就是地址
3.指针变量的定义:
数据类型*指针变量名;
例如:int *p; //定义了一个指针变量,变量名是p。int表示只能存放一个int类型的变量的地址
char*p //定义了一个指针变量,变量名是p。char表示只能存放一个int类型的变量的地址
4.指针变量定义的注意事项
1)"*"必须有,这是指针变量的标志
2)指针变量不能用来存放数值或字符之类的。
3)指针变量有局部和全局之分。
二 指针变量的初始化和引用
1 初始化
int *p=&a; //用a的地址初始化 p 这个指针变量
2 应用
用函数实现两个变量值的交换
代码如下:
三 数组指针
1.定义
所谓数值元素的指针就是数组元素的地址。
例如:int a[3]={0,1,2};
int *p=a; //p就是数组元素的指针
2 注意:
1)数组名a不代表整个数组,只代表数组的首地址;
2)“p=a”的作用是把数组a的首地址赋值给指针变量p,而不是把数组元素给p
3 数组指针的应用:
用指针将数组a中的n个整数按相反的顺序存放:
代码如下:
一 指针的概念及定义方法
1.指针变量: 用来存放地址的变量
2.指针: 就是地址
3.指针变量的定义:
数据类型*指针变量名;
例如:int *p; //定义了一个指针变量,变量名是p。int表示只能存放一个int类型的变量的地址
char*p //定义了一个指针变量,变量名是p。char表示只能存放一个int类型的变量的地址
4.指针变量定义的注意事项
1)"*"必须有,这是指针变量的标志
2)指针变量不能用来存放数值或字符之类的。
3)指针变量有局部和全局之分。
二 指针变量的初始化和引用
1 初始化
int *p=&a; //用a的地址初始化 p 这个指针变量
2 应用
用函数实现两个变量值的交换
代码如下:
#include <stdio h=""> //交换变量值的函数 void swap(int *p ,int *p1){ int temp; temp=*p; *p=*p1; *p1=temp; }; int main (int argc, const char * argv[]) { //定义变量 int a=1; int b=2; //打印调用函数前的值 printf("a=%d,b=%d\n",a,b); //调用函数 swap(&a,&b); //打印调用函数后的值 printf("a=%d,b=%d",a,b); </stdio>
三 数组指针
1.定义
所谓数值元素的指针就是数组元素的地址。
例如:int a[3]={0,1,2};
int *p=a; //p就是数组元素的指针
2 注意:
1)数组名a不代表整个数组,只代表数组的首地址;
2)“p=a”的作用是把数组a的首地址赋值给指针变量p,而不是把数组元素给p
3 数组指针的应用:
用指针将数组a中的n个整数按相反的顺序存放:
代码如下:
#include <stdio h=""> //定义函数,实现交换 void nixuarray(int a[],int len){ //定义数组指针 int *p=a; int i=0,j=len-1; while (i<j) { int temp; temp=*(p+i); *(p+i) = *(p+j); *(p+j) = temp; //修改下标 i++,j--; } }; int main (int argc, const char * argv[]) { //定义数组 int arr[5]={1,2,3,4,5}; //遍历交换前的数组 for (int i=0; i<5; i++) { printf("%d\t",arr[i]); }; nixuarray(arr, 5); //遍历交换后的数组 for (int i=0; i<5; i++) { printf("%d\t",arr[i]); }; return 0; } </stdio>