济南企业如何建网站怎么样做网站管理员
web/
2025/10/1 1:00:28/
文章来源:
济南企业如何建网站,怎么样做网站管理员,win10 wordpress安装教程,焊锡外发加工网一、认识存储单元指针是C语言最显著的特色。要理解指针的概念#xff0c;需要先理解计算机读写内存的的方式以及变量的概念。计算机内存是以字节为单位划分内存单元的#xff0c;每个内存单元占用一个字节#xff0c;每个内存单元都有自己的地址编号#xff0c;操作系统或软…一、认识存储单元 指针是C语言最显著的特色。要理解指针的概念需要先理解计算机读写内存的的方式以及变量的概念。 计算机内存是以字节为单位划分内存单元的每个内存单元占用一个字节每个内存单元都有自己的地址编号操作系统或软件根据这个地址来识别内存单元在地址所标识的内存单元中存取数据。内存单元的地址是固定的内存单元中的数据是可以修改的。 C语言中变量名实质上是内存单元的地址符号用户使用变量本质上是访问该变量所对应的内存单元。 二、C指针的概念 1、在C中将内存单元的地址编号称为指针可以通过一个变量来存放指针这种变量称为指针变量。指针变量中存储的是内存单元的地址。 例如 int a 10; 假设存放a的内存单元块为 101102103104占用四个字节。如果再执行一个 int *pa;那么p的值就成为101了*p的值就是10a的值也是10。 是取地址运算符获取变量的首地址。 2、创建指针的方法是类型说明符 *变量名这是C定义指针变量的方法。其中*表示这个变量是指针变量。 C要求指针必须存放在指针变量中。 一个指针只能指向同一类型的变量。 3、指针的初始化 int *pNULL; 或 int a10; int *pa; 注意 a未初始化的指针的系统会给一个随机的值没有意义操作可能引起系统崩溃。 b未初始化的指针应该给一个NULL值以表明它是个空指针表示0值。 c不允许把常量赋值给指针变量。 d必须保持指针变量类型与所指数据的一致性否则会发生不可预期的效果。虽然C已允许将任何地址赋值给指针变量。 4、取地址 与 取内容* 取地址运算符是 取内容运算符是*注意区别定义指针变量类型说明符*。 int a10; int *pa; //定义指针变量p并指向a *p3; //将3赋给指针p所指的内存单元则a的值也变为了3 int b *p; //将指针p的所指内存单元值赋给变量b 明白这个道理后指针和一般变量一样可以操作了。 指针的直接操作内存在Java中是没有的Java没有指针。Java中的基本变量名实际上也是内存地址的别名。 三、指针操作数组 1、指向数组的指针 数组是保存在一片连续的内存单元中。数组名是这块连续内存单元的首地址是不可改变的常量。因此数组名也是一个常量指针。 int a[3]{1,2,3}; int *pa; //指向数组的指针 当指针执行数组名或数组首元素地址时指针就指向了数组。 2、指针运算 a自增/自减C规定指针加1表示指针后一个指针的类型的内存单元。 b加减整数运算只能加减整数整数表示的基类型数据的宽度倍数。 c指针相减指针间的元素个数不是存储单元数。 d指针比较判断指针在内存中的高低位置关系。 3、指针操作数组 下标发和指针法分五种方式 #includestdio.h int main() { int i,a[5]{1,2,3,4}; int *pa; for(i0;i4;i) printf(a[%d]%d\n,i,a[i]); printf(\n); for(i0;i4;i) printf(p[%d]%d\n,i,p[i]); printf(\n); for(i0;i4;i) printf(*(p%d)%d\n,i,*(pi)); printf(\n); for(i0;i4;i) printf(*(a%d)%d\n,i,*(ai)); printf(\n); for(i0;i4;i) printf(*p%d\n,*p); getch(); return 0; } a[0]1 a[1]2 a[2]3 a[3]4 p[0]1 p[1]2 p[2]3 p[3]4 *(p0)1 *(p1)2 *(p2)3 *(p3)4 *(a0)1 *(a1)2 *(a2)3 *(a3)4 *p1 *p2 *p3 *p4 注意数组名虽然是指针但是数组名是常量不可改变因此不可以a 4、指针操作二维数组 二维数组是多个一维数组组成的数组或者说是一维数组的数组或者说是一维数组但是各个元素还是一维数组。 这个概念和java中是一致的。 假设有二维数组 int a[x][y]; 那么 aa表示数组首地址的指针。 ba[i]表示第i1个一维数组其地址为a[i]指向的是一个一维数组。 ca[i][j] 与*(a[i]j)、*(*(ai)j)是相同的表示同一个元素。 #includestdio.h int main() { int a[4][5], i,j; for(i0;i4;i) for(j0;j5;j) a[i][j]i*5j; printf(二维数组的值为:\n); for(i0;i4;i) { for(j0;j5;j) printf(%4d ,a[i][j]); printf(\n); } getch(); return 0; } 二维数组的值为: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 5、数组指针 数组指针变量是指针指向了一个数组。 例如 int *p[3];定义了一个指针p指向了一个长度为3的int数组。 #includestdio.h int main() { int a[4][5],i,j; int (*p)[5]; pa; for(i0;i4;i) { for(j0;j5;j) *(*pj)i*5j; p; } printf(二维数组的值为:\n); pa; for(i0;i4;i) { for(j0;j5;j) printf(%4d ,*(*pj)); printf(\n); p; } getch(); return 0; } 二维数组的值为: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 6、数组名参数 指针变量 p 是空指针的判断if ( p 0 )if ( p \0 )if ( p 3 - 3 )if ( p NULL ) /* 使用 NULL 必须包含相应的标准库的头文件 */if ( NULL p )if ( !p )if ( p q )...指针变量 p 不是空指针的判断if ( p ! 0 )if ( p ! \0 )if ( p ! 3 - 3 )if ( p ! NULL ) /* 使用 NULL 必须包含相应的标准库的头文件 */if ( NULL ! p )if ( p )if ( p ! q )
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84749.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!