标题:大一菜鸟关于指针的一个小困惑。
只看楼主
北冥有鱼:
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2017-10-12
结帖率:45.45%
已结贴  问题点数:13 回复次数:5 
大一菜鸟关于指针的一个小困惑。
  按照规定定义一个指针变量需要表明它指向单元的类型,如int double等。
例如  int a
&a 包含了变量a的纯地址和数据类型,但是&a 终究只是一串十六进制数字而已,这串数字已经把a交代清楚了。
那把地址也就是这串数字 直接交给 指针变量不是就好了,前面注明指向单元的类型是不是有点多此一举,

搜索更多相关主题的帖子: 指针 困惑 变量 int 数字 
2018-03-13 20:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:2 
“指针”只是一个变量名,它要表达的主要方面有:存放数据的地址(地址属性)和存放数据的数据类型(大小属性)。
2018-03-13 21:06
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册: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]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-03-13 21:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册: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
等 级:新手上路
帖 子:71
专家分: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: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485235-1-1.html




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

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