首页 > 代码库 > 指针和数组及内存管理

指针和数组及内存管理

1. 指针和地址

TCPL 中给指针的定义是: A pointer is a group of cells (often two or four) that can hold an address .

int value = http://www.mamicode.com/10;

int *pvalue = http://www.mamicode.com/&value;

上面这个语句的内存模型是:

注意: &(取地址)操作符只对内存中存在的对象起作用,如变量和数组类型。不能对表达式,常量和寄存器变量使用取地址操作。

        *(析取)操作符应用于一个指针变量时,取得这个指针变量所指向的对象。

        每个指针只能指向特定类型的数据类型(void *型的指针可以指向任意类型的对象,但是却无法析取自身)。

 

2. 指针和函数参数:
TCPL中有这样一段描述: Since C passes arguments to functions by value, there is no direct way for the called function to alter a variable in the calling function.

C语言函数参数的传递方式是传值的,所以不能直接在被调用函数中修改调用函数中的变量。下面所谓的通过传递指针的"传址"方式,实际上也是"传值"方式,不过这里传递的是一个地址的值而已

下面通过一个实例来验证参数为指针的函数: