注:数组首元素的首地址和数组的首地址是不同的,前者是数组元素的地址,而后者是数组整体的地址。两个东西的含义不同,但是数值上是相同的;
根据以上,我们知道可以用一个指针指向数组的第一个元素,这样就可以用间接访问的方式去逐个访问数组中的元素,这样访问数组就有了两种方式:
有 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