指针以及指针做参数的问题

一‘指针的定义
指针是一种地址变量,通常也叫指针变量,统称指针。而地址则是地址变量的值
指针绝对不是地址,千万不要把意义给混淆了。

指针的大小就是4个字节 32位 指针里存放的是地址 他本身放在符号表中。

实际上地址就是一种基本数据类型,它应该跟整形,字符,浮点是一样的 。
■指针只是存储地址类型的变量,它不是数据类型。

由于数组名是一个符号常量,因此它是一个右值, 而指针作为变量它是一个左值

(1)int *ptr; //指针的类型是int *

(2)char *ptr; //指针的类型是char *

(3)int **ptr; //指针的类型是 int **

(4)int (*ptr)[3]; //指针的类型是 int(*)[3]

(5)int *(*ptr)[4]; //指针的类型是 int *(*)[4]

(1)int *ptr; //指针所指向的类型是int

(2)char *ptr; //指针所指向的的类型是char

(3)int **ptr; //指针所指向的的类型是 int *

(4)int (*ptr)[3]; //指针所指向的的类型是 int()[3]

(5)int *(*ptr)[4]; //指针所指向的的类型是 int *()[4]
当你对C越来越熟悉时,你会发现,把
与指针搅和在一起的“类型”这个概念分成“指针的类型”和“指针所指向的类型”两个概念,是精通指
针的关键点之一。我看了不少书,发现有些写得差的书中,就把指针的这两个概念搅在一起了,所以看起
书来前后矛盾,越看越糊涂。


指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序
里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。

指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一
片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我
们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。

指针所指向的内存区和指针所指向的类型是两个完全不同的概念。在例一中,指针所指向的类型已经有
了,但由于指针还未初始化,所以它所指向的内存区是不存在的,或者说是无意义的

二、指针作为参数

函数参数传递是值传递,头指针作为参数时,实际上是生成了一个指针的副本,
函数中是对副本进行操作,没有改变原指针的值,所以指针仍保持进入函数前的值。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值