您的位置:首页 > 编程语言 > C语言/C++

黑马程序员-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  应用

              用函数实现两个变量值的交换

   代码如下:

#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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: