指针的类型和指针所指向的类型说明

指针的类型和指针所指向的类型说明

2010-03-17 15:24 1774人阅读 评论(1) 收藏 举报

编译器c

1.指针的类型

从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部

分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各

个指针的类型:

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

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

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

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

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

怎么样?找出指针的类型的方法是不是很简单?

2.指针所指向的类型

当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了

编译器将把那片内存区里的内容当做什么来看待。

从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声

明符*去掉,剩下的就是指针所指向的类型。例如:

(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 越来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成

"指针的类型"和"指针所指向的类型"两个概念,是精通指针的关键点之一。

我看了不少书,发现有些写得差的书中,就把指针的这两个概念搅在一起了,

所以看起书来前后矛盾,越看越糊涂。

来源: <http://blog.csdn.net/gwonph/article/details/5389397>

来自为知笔记(Wiz)

指针的类型和指针所指向的类型说明,布布扣,bubuko.com

时间: 2024-09-29 10:12:08

指针的类型和指针所指向的类型说明的相关文章

不要伤害指针(3)--指针和结构类型的关系

可以声明一个指向结构类型对象的指针. struct MyStruct { int a; int b; int c; }; struct MyStruct ss = {20,30,40};//声明了结构对象ss,并把ss 的成员初始化为20,30 和40. struct MyStruct *ptr = &ss;//声明了一个指向结构对象ss 的指针.它的类型是MyStruct *,它指向的类型是MyStruct. int *pstr = (int*)&ss;//声明了一个指向结构对象ss 的

指针数组、数组指针、函数指针、指针函数总结

指针数组 && 数组指针 char *a[5]; //定义一个指针数组, 数组的元素都是char *指针类型.初始化也可以在里面存放字符或字符串.a的类型是char *[5] //若char *a[5]={"red","white","blue","dark","green"}; //a在这里的类型是char *[],实质上是一个二级指针.也就是说a所代表的那块内存里面存放着的是数组中第一个

指针数组、数组指针、函数指针、指针函数总结C++

指针数组.数组指针.函数指针.指针函数总结 2014-11-11 指针数组 && 数组指针 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 char *a[5];      //定义一个指针数组, 数组的元素都是char *指针类型.初始化也可以在里面存放字符或字符串.a的类型是char *[5] //若char *a[5]={"red","white","blue","dark",&qu

了解指针(2)-- 指针算术

指针可以加上或减去一个整数.指针的这种运算的意义和通常的数值的加减运算的意义是不一样的.指针加1的结果等于原来的地址值加上指向的对象占用的总字节数.指针的相减将得到一个整数,仅当两个指针指向同一个数组时这种运算才有意义,这将得到两个元素的间隔. 例1: char a[20]; int *ptr=(int *)a; //强制类型转换并不会改变 a 的类型 ptr++; 在上例中,指针 ptr 的类型是 int*,它指向的类型是 int,它被初始化为指向整型变量 a.接下来的第 3 句中,指针 pt

不要伤害指针(7)--指针类型转换

当我们初始化一个指针或给一个指针赋值时,赋值号的左边是一个指针,赋值号的右边是一个指针表达式.在我们前面所举的例子中,绝大多数情况下,指针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式所指向的类型是一样的. 例十五: float f = 12.3;float *fptr = &f;int *p; 在上面的例子中,假如我们想让指针p 指向实数f,应该怎么办?是用下面的语句吗? p = &f; 不对.因为指针p 的类型是int *,它指向的类型是int.表达式&f 的结

指针的内容 &nbsp; 指针的地址 指针所指向的内容 指针的类型 指针所指向的类型

这几个个东东很具有迷惑性. int a=10;      //假设a的地址是 0x0000004C int *p;           //假设p的地址是 0x0035FA94 p=&a; 指针的内容:指针里面存放的是地址. 指针p里面存放的是a的地址(&a).即指针p里面存放的内容是0x0000004C. 指针的地址:指针本身的地址. 指针p的地址就是&p.指针p的地址是0x0035FA94 指针所指向的内容:也就是指针里面存放的地址,那块地址里面存放的内容,通过对指针进行*引用

指针的类型与指针所指向的类型

指针的类型和指针所指向的类型很明显是不一样的东西,但好多情况下却容易忽视它们的区别.指针的类型是指针自身的类型,而指针所指向的类型是指针指向的数据(内存)的类型. 指针的类型 从语法上来看,我们只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型.如: 1 int *ptr; //指针的类型是 int* 2 char *ptr; //指针的类型是 char* 3 int **ptr; //指针的类型是 int** 4 int (*ptr)[3]; //指针的类型是 int(*)[3]

为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?

static的成员变量,不是存储在Bar实例之中的,因而不会有递归定义的问题. 类声明: class Screen: //Screen类的声明 1 类定义: class Screen{ //Screen类的定义 //etc... }; 1 2 3 当用实例化一个类的对象时,编译器会根据类的定义来分配相应的存储空间.也就是说,在创建对象前,一定要有完整的类定义,这样编译器才能正确的计算所需空间. 那么我们来看如下代码: class Screen{ Screen sc; //error, 'sc'

指针-&gt;指针所指向的类型

指针所指向的类型: 从语法上看,只需要将指针声明语句中指针的名字和指针描述符*去掉,剩下的就是指针所指向的类型: 指针声明 指针所指向的类型 int *p int :int 类型 chat *p chat :char 类型 int *p[3] int [3]:int 类型的数组 int (*p)[3] int ()[3]:int 类型的数组 int **p int *:int类型的指针 指针的类型(即指针本身的类型)和指针所指向的类型是两个不同概念: 区别: 指针的类型带指针的声明符,指针所指向