| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 358 人关注过本帖
标题:大一菜鸟关于指针的一个小困惑。
只看楼主 收藏
北冥有鱼:
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2017-10-12
结帖率:45.45%
  已结贴   问题点数:13  回复次数:5   
大一菜鸟关于指针的一个小困惑。
  按照规定定义一个指针变量需要表明它指向单元的类型,如int double等。
例如  int a
&a 包含了变量a的纯地址和数据类型,但是&a 终究只是一串十六进制数字而已,这串数字已经把a交代清楚了。
那把地址也就是这串数字 直接交给 指针变量不是就好了,前面注明指向单元的类型是不是有点多此一举,

2018-03-13 20:46
吹水佬
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:141
帖 子:5839
专家分:25372
注 册:2014-5-20
  得分:2 
“指针”只是一个变量名,它要表达的主要方面有:存放数据的地址(地址属性)和存放数据的数据类型(大小属性)。
2018-03-13 21:06
九转星河
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:长长久久
等 级:版主
威 望:41
帖 子:4833
专家分:13643
注 册:2016-10-22
  得分:5 
听说,C语言是强类型语言,然而PHP是属于弱类型语言,也就是说变量类型是可以忽略的,这当然说明了不定义数据类型也可以实现~

你如果有兴趣的话或者可以试试设计一个编译器这样用:

int s;    //定义一个数据类型int变量s
*p=s;    //定义一个*p指向s
*p=3;   //对*p进行赋值~
*p='a';  //同上对p进行赋值~

printf("%u\n",sizeof (*p));    //猜猜运行结果是啥~

~


[此贴子已经被作者于2018-3-13 21:23编辑过]


[code]/*~个性签名:弟弟的妹妹叫妹妹,弟弟的姐姐叫姐姐~ 2018-06-18更~*/[/code]
2018-03-13 21:15
rjsp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:242
帖 子:5558
专家分:31405
注 册:2011-1-18
  得分:5 
“但是&a 终究只是一串十六进制数字而已,这串数字已经把a交代清楚了” ----- 这句话听不懂

你是不是想让
int a = 0;
int* p = &a;
中第二个int省略掉?C++中是可以的,写成
int a = 0;
auto p = &a;
2018-03-14 08:38
北冥有鱼:
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2017-10-12
  得分:0 
回复 4楼 rjsp
  有些书上这么写的:
  int p // 定义一个整型变量
  int a=&p//在指针是32位前提下,把p的地址交给a
 printf("%0x",a)
 
最后会得到一串数字,也就是变量p的指针。所以在我目前的认知中指针就是一串数字。

还有您说的那个第二个int省略,也是我的困惑,看到楼上回答我在想是不是因为c是强类型语言,这么写是  规定!没有为什么。

现在感觉很困惑,指针到底是什么
2018-03-14 08:57
童生
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:7
帖 子:205
专家分:455
注 册:2018-3-7
  得分:1 
回复 5楼 北冥有鱼:
你的理解在某些角度也是可以,
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    double x=12346.1700;
    void *p;
    double *p1;
     
     p= &x;
     p1 = &x;
    printf("&x = %0x\n",&x);
    printf("p = %0x\n",p);
    printf("p1 = %0x\n",p1);
   

    printf("*((double*)p) = %f\n",*((double*)p));
    printf("*p1 = %f\n",*p1);
   
return 0;
}
2018-03-14 18:11







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.198685 second(s), 9 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved