当前位置: 首页 > news >正文

南昌做网站建站的百度一下首页网页手机版

南昌做网站建站的,百度一下首页网页手机版,外贸建站优化推广,解析软件的网站前言:内容包括:指针运算,指针和数组,二级指针,指针数组 详解指针(1)(点击即跳转) part 1:指针运算 1 指针-整数 以如下代码为例:初始化数组内容…

前言:内容包括:指针运算,指针和数组,二级指针,指针数组

详解指针(1)(点击即跳转)

 part 1:指针运算

1 指针+-整数

以如下代码为例:初始化数组内容全为0

#define N_VALUES 5
float values[N_VALUES];
float *vp;for (vp = &values[0]; vp < &values[N_VALUES];)
{*vp++ = 0;
}

*vp++:后置++只作用于vp指针,后置++是先使用再++,故而此操作是*vp=0,vp++

vp++:跳过一个float类型的大小,由于数组中的元素都是float类型,故而vp++,跳过一个元素

最终for循环结束的条件是vp=&values[N_VALUES],即指针vp指向了最后一个元素后面的那一块空间,但需要注意,这不是越界访问,因为vp指针只是指向了那一块不属于数组的空间,却并没有访问

2 指针-指针 

注意:两个指针必须指向同一块区域,两个指针的类型必须相同

           指针-指针就是指针和指针之间的元素个数  (指针就是地址)

           但有正负之分:小地址-大地址:元素个数带负号

                                     大地址-小地址:元素个数是正数

以如下代码为例:求字符串长度

int my_strlen(char *s)
{char *p = s;while(*p != '\0' )p++;return p-s;
}

字符型指针接收字符串的首个字母的地址

 故而求出的字符串长度是6

3 指针的关系运算

 以如下代码为例:初始化数组内容为0

#define N_VALUES 5
float values[N_VALUES];
float *vp;for(vp = &values[N_VALUES]; vp > &values[0];)
{*--vp = 0;
}

*--vp:vp先-1,然后对vp解引用:*vp

或许有人会这么简化以上代码:可能更容易理解

for(vp = &values[N_VALUES-1]; vp >= &values[0];vp--)
{*vp = 0;
}

 

虽然再绝大部分编译器上这样做是没有问题的,但是我们还是要避免这样些,因为标准并不保证它可行 

标准规定:
允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与
指向第一个元素之前的那个内存位置的指针进行比较

 黑色的是属于数组的空间,蓝色是不属于数组的空间

标准规定:指针p1可以和p2比较,但是指针p1不能与p3比较

故而第二种即使容易理解,但是我们要避免写出这种代码

part 2:指针和数组

指针可以指向数组元素,故而可以通过指针来访问数组的每一个元素

int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };int *p = arr; //指针存放数组首元素的地址int sz = sizeof(arr) / sizeof(arr[0]);//数组元素个数int i = 0;for (i = 0; i<sz; i++){printf("%d ", *(p + i));}return 0;
}

p+i:指向的是arr数组中下标为i的元素

*(p+i)就可以拿到下标为i的元素

part 3:二级指针

二级指针存放的是一级指针的地址

一级指针存放的是变量的地址

这里所有的地址都是假设的,现有变量a=10,一级指针pa,二级指针ppa

int a = 10;
int*pa = &a;
int**ppa =&pa

int*pa : *表示pa是指针,int表示pa指向的对象(a)是int类型

int**ppa:*表示ppa是指针,int*表示ppa指向的对象(pa)是int*类型(即一级指针) 

 *pa(对一级指针解引用一次)可以找到a

**ppa(对二级指针解引用两次)可以找到a

**ppa = 30;
//等价于*pa = 30;
//等价于a = 30;

*ppa:找到的是pa,访问到的是pa

int b = 20;
*ppa = &b;//等价于 pa = &b;

part 3:指针数组

指针数组是数组,是存放指针的数组

int* arr3[5];

arr3是一个数组,有五个元素,每个元素是一个整形指针
实例:使用指针数组模拟二维数组

int main()
{int arr1[] = { 1,2,3,4 };int arr2[] = { 5,6,7,8 };int* str[] = { arr1,arr2 };int i = 0;for (i = 0; i < 2; i++){int j = 0;for (j = 0; j < 4; j++){printf("%d ", str[i][j]);}printf("\n");}return 0;
}

模拟两行4列的二维数组,每一行都是一个一维数组

str[i][j]:str[i]就是某个一维数组的数组名,j就是一行中某个元素的下标

             就像我们平常访问一个一维数组一样,现有int arr[]={1,2,3}

            我们是通过arr[i]的方式访问arr数组的每个元素的

             arr[0]:第一个元素,arr[1]:第二个元素,arr[2]:第三个元素

            我们可以发现,数组名[下标] :数组中的某个元素

http://www.yayakq.cn/news/412976/

相关文章:

  • 网站开发 小程序开发网站建设资讯站
  • 网站建设丶金手指下拉14北京网络技术有限公司
  • 珠海手机微信网站建设小程序开发贵州省住房和建设厅网网站
  • 辽宁企业网站建设公司简单的网站建立怎么做
  • 加强和改进网站建设建设方案wex5可以做网站吗
  • 加拿大服务器做网站wordpress+漂亮的博客
  • 怎么做淘宝客优惠劵网站申请域名要钱吗
  • 网站建设合同 保密条款iis5.1怎么新建网站
  • 河南网站备案小程序启动失败 错误码
  • 河南做网站需要多少钱龙岗网站建设公司怎么样
  • 微信网页宣传网站怎么做的网站建设 样板
  • 视频网站怎么做统计自学网站
  • 商城网站设计图国内cms排行
  • 深圳市做物流网站seo怎么做教程
  • 试剂网站建设成免费crm软件app
  • 医疗器械网石家庄seo管理
  • 网站建设的市场需求视频网站的防盗链是怎么做的
  • 天水市网站建设西安百度关键词包年
  • 做航模的网站办公室装修专业网站
  • 那个网站做图片好看的百度网站统计
  • 做兼职最好的网站软件技术一般在哪上班
  • 网站备案服务硬件开发工程师待遇
  • 做导购网站有哪些北京建设执业网站
  • 余姚微信网站建设建设银行深圳天健世纪支行网站
  • 东莞市手机网站建设wordpress 加载图片不显示图片
  • 手机电脑网站一站式网站开发阶段流程图
  • 网站后台设置关键字桂林建站平台哪家好
  • 营销式网站建设公司博优云软件官方网站
  • 网站外链代发什么平台可以推销自己的产品
  • 网站建设相对应的税收分类是国家企业信用信息查询公示系统