zoukankan      html  css  js  c++  java
  • 指针,指针,指针。。。

    1、指针常量与常量指针

    int a = 10;
    int * const p1 = &a;
    const int * p2 = &a;

    p1是不可改变地址的常量,即指针常量,但能够对它所指向的内容进行改动。

    p2是指向常量的指针,即常量指针,它所指向的地址内容是不可改动的,但其本身确实能够改动的。

    2、指针运算

    #include<stdio.h>
    int main()
    {
    	int *ip1,*ip2,ivalue;
    	char *cp1,*cp2,cvalue;
    	ip1 = (int*)0x500;
    	ip2 = (int*)0x518;
    	ivalue = ip2 - ip1;
    	cp1 = (char*)0x500;
    	cp2 = (char*)0x518;
    	cvalue = cp2 - cp1;
    	printf ("ivalue=%d  cvalue=%d
    ",ivalue,cvalue);
    	return 0;
    }
    执行结果:ivalue=6  cvalue=24

    指针进行运算时,它的值与其类型有关。两个地址相同相差24个字节,以整形指针相减结果为 24/4=6;以字符指针相减结果为 24/1=24;

    3、指针与数组

    #include<stdio.h>
    int main()
    {
    	int a[2][3][4] = {
    		{{101,102,103,104},{111,112,113,114},{121,122,123,124}},
    		{{201,202,203,204},{211,212,213,214},{221,222,223,224}}
    	};
    	printf("%d	%d
    ",**(a[0]+2),sizeof(a));
    	return 0;
    }
    输出结果:121 96

    分析:对于一位数组a,*a等价于a[0],*(a+2)等价于a[2]。同理对于多维数组*a[0]等价于a[0][0],*(a[0]+2)等价于a[0][2],**(a[0]+2)等价于*a[0][2]等价于a[0][2][0]。
    sizeof(a)计算数组a所占内存空间:(2*3*4)*4Byte=96Byte。

    4、指针数组 与 数组指针

    int *p[N],p代表一个可存放N个整型指针类型元素的一维数组,p是指针数组,本质是数组,是常量。

    int (*p)[N],p代表一个指向由N个整型数据组成的一维数组的指针,p是数组指针,本质是指针,是变量。

    5、指针函数 与 函数指针

    int * f(int x),f代表一个返回值为整型指针的函数,f是指针函数,本质是函数。

    int (*f)(int x),f代表一个指向函数的指针,该函数的參数和返回值均为整型,f是函数指针,本质是指针。

  • 相关阅读:
    ubuntu下文件安装与卸载
    webkit中的JavaScriptCore部分
    ubuntu 显示文件夹中的隐藏文件
    C语言中的fscanf函数
    test
    Use SandCastle to generate help document automatically.
    XElement Getting OuterXML and InnerXML
    XUACompatible meta 用法
    Adobe Dreamweaver CS5.5 中文版 下载 注册码
    The Difference Between jQuery’s .bind(), .live(), and .delegate()
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4086461.html
Copyright © 2011-2022 走看看