`
pujing
  • 浏览: 41561 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C++指针

 
阅读更多
一、变量与内存

内存的最小单元是字节(8位),每个变量都有一个地址,变量int的内存大小是4个字节。

引用
int  a = 10;
int* pa= &a;

定义一个变量pa,类型为int*,初始值为&a;称int*为指针类型,pa指向了一个int型变量,pa为指针类型的变量(简称“指针”)

*pa = 8;(*pa读写内存地址的值)

二、指针和数组

数组可以看成一块内存,数组名就是内存的地址(首地址),然后通过指针访问。

引用
int* p = arr;相当于int* p = &arr[0];


p += 1;后移1个元素,取arr[1]的值。
引用
p = arr + 3 (p = &arr[3]),
表示p指向arr数组的第四个元素。


三、指针作为函数的参数

1、传递指针作为参数
引用
void test(int* p);

调用:int a = 0; test(&a);


2、传递数组作为参数,需要传递首地址和长度。

引用
void max_min(int* p,int len,int* pmax,int* pmin)
{
    int _max=p[0];int _min=p[0];
    for(int i=1;i<len;i++)
    {if(p[i]>_max) _max=p[i];  if (p[i]<_min) _min=p[i];}
     *pmax = _max; *pmin = _min;
}


3、把指针传给函数有什么作用?
1)效率问题:传值与传地址。
2)返回多个值:函数返回多个值,必须使用指针参数。
注:int avg(int* p,int len)等同于 int avg(int p[],int len);


4、const指针

指定的内存只能读,不能写。
int test(const int* p,int len)


四、何安全使用指针

用指针的时候要清楚1)指向变量、数组、指向零;2)是否失效、越界。3)空指针和野指针。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics