c语言指针用法,c语言学到什么

  c语言指针用法,c语言学到什么

  关于语言学习的趣事_关于指针转换-volcano-博客花园

  c语言学习的趣事_关于指针转换我今天在Gmail的小组讨论帖子里看到了这样一个帖子:

  [learn-linux-c-cpp]一维数组被转换成数组的指针。

  benzhemin@gmail.com张哲

  11-10-28

  发送到learning-linux。

  也请讨论:

  #包含stdio.h

  int main(void){

  int a[10]={1,2,3,4,5,6,7,8,9,10 };

  int(* p)[2]=(int(*)[2])a;

  printf(%d\n ,* * p);

  printf(%d\n ,* *(p 1));

  printf(%d\n ,* a);

  返回0;

  a只是一个指针。为什么先转换成int (*)[2]再转换成二维指针?

  事实上,下面的代码也可以被编译和运行。

  #包含stdio.h

  int main(void){

  int a[10]={1,2,3,4,5,6,7,8,9,10 };

  int(* p)[2]=(int(*)[2])a;

  printf(%d\n ,* * p);

  printf(%d\n ,* *(p 1));

  printf(%d\n ,* a);

  返回0;

  stumped int(* p)[2]=(int(*)[2])a;和int (*p)[2]=(int (*)[2])是等价的。这里很明显这位网友混淆了概念,如下所述。

  a只是一个指针。为什么先转换成int (*)[2]再转换成二维指针?我们知道在C语言中,数组名是一个常数,也就是常说的const quantity。经过上面的改动,A并没有像int (*)[2]那样变成指针类型,而是保留了下来。

  原始属性;只是P是类似int (*)[2]的指针类型,被用户强制指向地址A。也就是说,如果使用指针P进行访问,就可以启动A地址。

  10个整数被解释为一个二维数组。

  还有如下描述:

  stumped int(* p)[2]=(int(*)[2])a;和int (*p)[2]=(int (*)[2])是等价的。上面两个描述是一致的,因为解析的时候:A和A的本质是一样的,都指向内存中的固定区域;因此,这两种转换是等价的。

  这里不说了,欢迎园中大侠来探讨这个问题。

  以上只是我个人的看法。如有不妥,请拿砖。...

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: