详解C语言中的函数、数组与指针分享

    注:数组首元素的首地址和数组的首地址是不同的,前者是数组元素的地址,而后者是数组整体的地址。两个东西的含义不同,但是数值上是相同的;

    根据以上,我们知道可以用一个指针指向数组的第一个元素,这样就可以用间接访问的方式去逐个访问数组中的元素,这样访问数组就有了两种方式:

    有 int a[5];  int *p; p = a;

    数组的方式依次访问:a[0]  a[1]  a[2]  a[3]  a[4]

    指针的方式依次访问:*p  *(p+1)  *(p+2)  *(p+3)  *(p+4)

  (7) 指针与++ –符号进行运算:指针本身也是一种变量,因此也可以进行运算,但是因为指针变量本身存的是某个其他变量的地址值,因此该值进行* / %等运算是无意义的,

                 故两个指针变量相加本身也无意义,但相减有意义。指针变量+1,-1是有意义的,+1就代表指针所指向的格子向后挪一格,-1代表指针所指向的格子向前挪一格。

    *p++的解析:++先跟p结合,但是因为++后置的时候,本身含义就是先运算后增加1(运算指的是p++整体与前面的*进行运算;增加1指的是p+1),所以实际上*p++符号整体对外表现的

            值是*p的值,运算完成后p再加1;

    *p++等同于:*p;   p += 1;

    *++p等同于:p += 1; *p;

    (*p)++,使用()强制将*与p结合,只能先计算*p,然后对*p整体的值++

    ++(*p),先*p取值,再前置++,该值+1后作为整个表达式的值

  // 指针的定义、赋值及初始化  #include <stdio.h>  int main(void)  {    int a = 23;    int *p = &a;    *p = 111;    printf("a = %dn", a);    return 0;  }
  // 用指针去访问数组  #include <stdio.h>  int main(void)  {    int a[5] = {555, 444, 333, 222, 111};    int *p;    //p = &a;    //p = &a[0];    p = a;    //p += 1;    //printf("*p = %d.n", *p);    //printf("*p++ = %d.n", *p++);    //printf("*++p = %d.n", *++p);    //printf("(*p)++ = %d.n", (*p)++);    printf("++(*p) = %d.n", ++(*p));    return 0;  }

4、补充:变量与数据类型的实质

  (1) 程序在环境中运行时,需要一定的资源支持,而这些资源包括:CPU(运算能力)、内存等,这些资源一般由运行时环境(一般是操作系统)来提供,比如我们在linux系统上./a.out运行程序时,

    linux系统为我们提供了运算能力和内存;

  (2) 程序越庞大,运行时消耗的资源越多,比如说内存额定占用,如果越大的程序,占用的内存肯定越多,而占用内存的其中之一,就是我们在程序中定义的变量;

  (3) C语言程序中,变量的实质就是内存中的一个格子。当我们定义了一个变量后,就相当于在内存中得到了一个格子,而这个格子的免费精选名字大全就是变量名,

    以后访问这个内存格子就只用使用该变量名就行了,这就是变量的本质;

  (4) 数据类型的实质是内存中格子的不同种类。比如在32位的机器上:

    短整形格子(short)          占用2字节,即16位的空间

    整形格子(int)             占用4字节,即32位的空间

    单精度浮点型格子(float)         占用4字节,即32位的空间

    双精度浮点型格子(double)        占用8字节,即64位的空间

    字符型格子(char)           占用1字节,即8位的空间

  (5) sizeof运算符:返回一个变量或者一个数据类型的内存占用长度,以字节为单位;

  // sizeof运算符的演示  #include <stdio.h>  int main(void)  {    int len;    //len = sizeof(int);    //len = sizeof(float);    //len = sizeof(double);    //len = sizeof(char);    //double d;    //len = sizeof(d);    int a[5];    //len = sizeof(a);    len = sizeof(a) / sizeof(a[0]);    printf("len = %d.n", len);    return 0;  }

以上所述是小编给大家介绍的C语言中的函数、数组与指针,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对<计算机技术网(www.ctvol.com)!!>网站的支持!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/487840.html

(0)
上一篇 2020年11月12日
下一篇 2020年11月12日

精彩推荐