[b][color=red]一、变量与内存[/color][/b]
内存的最小单元是字节(8位),每个变量都有一个地址,变量int的内存大小是4个字节。
[quote]int a = 10;
int* pa= &a;[/quote]
定义一个变量pa,类型为int*,初始值为&a;称int*为指针类型,pa指向了一个int型变量,pa为指针类型的变量(简称“指针”)
*pa = 8;(*pa读写内存地址的值)
[b][color=red]二、指针和数组[/color][/b]
数组可以看成一块内存,数组名就是内存的地址(首地址),然后通过指针访问。
[quote]int* p = arr;相当于int* p = &arr[0];[/quote]
p += 1;后移1个元素,取arr[1]的值。
[quote]p = arr + 3 (p = &arr[3]),[/quote]表示p指向arr数组的第四个元素。
[b][color=red]三、指针作为函数的参数[/color][/b]
1、传递指针作为参数
[quote]void test(int* p);[/quote]
调用:int a = 0; test(&a);
2、传递数组作为参数,需要传递首地址和长度。
[quote]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];}
[color=blue][b]*pmax[/b][/color] = _max; [color=blue][b]*pmin [/b][/color]= _min;
}[/quote]
3、把指针传给函数有什么作用?
1)效率问题:传值与传地址。
2)返回多个值:函数返回多个值,必须使用指针参数。
注:int avg(int* p,int len)等同于 int avg(int p[],int len);
4、const指针
指定的内存只能读,不能写。
int test(const int* p,int len)
[color=red][b]四、何安全使用指针[/b][/color]
用指针的时候要清楚1)指向变量、数组、指向零;2)是否失效、越界。3)空指针和野指针。
内存的最小单元是字节(8位),每个变量都有一个地址,变量int的内存大小是4个字节。
[quote]int a = 10;
int* pa= &a;[/quote]
定义一个变量pa,类型为int*,初始值为&a;称int*为指针类型,pa指向了一个int型变量,pa为指针类型的变量(简称“指针”)
*pa = 8;(*pa读写内存地址的值)
[b][color=red]二、指针和数组[/color][/b]
数组可以看成一块内存,数组名就是内存的地址(首地址),然后通过指针访问。
[quote]int* p = arr;相当于int* p = &arr[0];[/quote]
p += 1;后移1个元素,取arr[1]的值。
[quote]p = arr + 3 (p = &arr[3]),[/quote]表示p指向arr数组的第四个元素。
[b][color=red]三、指针作为函数的参数[/color][/b]
1、传递指针作为参数
[quote]void test(int* p);[/quote]
调用:int a = 0; test(&a);
2、传递数组作为参数,需要传递首地址和长度。
[quote]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];}
[color=blue][b]*pmax[/b][/color] = _max; [color=blue][b]*pmin [/b][/color]= _min;
}[/quote]
3、把指针传给函数有什么作用?
1)效率问题:传值与传地址。
2)返回多个值:函数返回多个值,必须使用指针参数。
注:int avg(int* p,int len)等同于 int avg(int p[],int len);
4、const指针
指定的内存只能读,不能写。
int test(const int* p,int len)
[color=red][b]四、何安全使用指针[/b][/color]
用指针的时候要清楚1)指向变量、数组、指向零;2)是否失效、越界。3)空指针和野指针。