码迷,mamicode.com
首页 > 编程语言 > 详细

C语言 详解多级指针与指针类型的关系

时间:2016-04-08 00:41:48      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

//通常意义上,指针类型指的是‘指针值’的类型,而不是‘指针’的类型

//V推论①:变量的步长只与变量的类型有关
//普通变量名是一段内存空间的标识,普通变量名代表的是一段内存空间,
//对于复杂变量(例如指针):通常的指针的步长准确来说是指‘指针值’的步长,而不是指‘指针本身’的步长,指针本身的步长永远是4,
//我们通常说的指针类型往往指的是‘指针值’的类型,,而不是‘指针’的类型
//而指针类型就是一个占4个字节大小内存空间的一种类型(从来没有人定义过指针类型,人们定义的都是‘指针值’的类型),
//在计算机看来,指针这个类型和int类型没啥区别,都是4个字节大小

//a指针的值是一个数组指针(int (* p)[5]),那么&a的步长就是一个int型有5个元素的数组的大小
//&a这个指针本身和&a的值的区别是:&a这个指针本身指的是占有4个字节大小的内存空间,&a的值指的是一个数组的地址

//V推论②:多级指针是人为为‘指针本身’类型做的一种区分


//例如:int a[5]={0};  这里 a是指针,a这个‘指针的值’的类型是int *,同时a指针本身是一个一级指针;
//&a也是指针 ,&a这个‘指针的值’的类型是int (* )[5],同时&a指针本身是一个二级指针


//二级指针是指针本身类型的一种人为自定类别,但通常意义上指针的类型没有任何关系
//一级指针与二级指针的区别在于,一级指针的值是某种类型的数据的地址,而二级指针的值是一个指针的地址

#include<stdio.h>
#include<stdlib.h>

void main(){
    int a[5] = { 1, 2, 3, 2, 1 };
    printf("%x\n", &a);
    printf("%x\n",&a+1);
    system("pause");
}

 

C语言 详解多级指针与指针类型的关系

标签:

原文地址:http://www.cnblogs.com/zhanggaofeng/p/5366259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!