鱼C论坛

 找回密码
 立即注册
查看: 1296|回复: 6

[已解决]scanf()的参数和指针

[复制链接]
发表于 2020-2-27 13:35:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
下面是C Primer Puls 的例子的部分:
#include<stdio.h>
#include<stdlib.h>
main()
{
    int *p;
    int  i, n;
    scanf("%d",&n);
    p=(int *)malloc(n*sizeof( int ));
    for(i=0;i<n;++i)
    {
        scanf("%d",&p[i]);     //为什么去掉&用p[i]就错了  指针变量p储存的不就是地址吗   
    }                                //但是用p++  或者p+i 的形式是对的(能运行)    请详解谢谢
    free(p);
    return 0;
}
最佳答案
2020-2-27 15:57:09
因为p是个指针变量而不是指针数组。如果p指向的是一个数组a,p[i]表示的是数组a的第i个元素。p+i这是数组第i个元素的地址。*(p+i)和p[i]是一个意思,相应的p+i和&p[i]是一个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-27 13:45:38 | 显示全部楼层
p是指针,p自身在内存中有地址
p指向哪里?p的值为所指向内容的地址

p[i] 以数组的形式获取
&p[i] 以数组的形式存储内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 14:10:18 | 显示全部楼层
p 只是一个数组,并不是指针。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 15:57:09 | 显示全部楼层    本楼为最佳答案   
因为p是个指针变量而不是指针数组。如果p指向的是一个数组a,p[i]表示的是数组a的第i个元素。p+i这是数组第i个元素的地址。*(p+i)和p[i]是一个意思,相应的p+i和&p[i]是一个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 16:33:20 | 显示全部楼层
指针变量p存储的是地址,但是不能直接拿变量当地址啊,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 16:36:34 | 显示全部楼层
major_lyu 发表于 2020-2-27 15:57
因为p是个指针变量而不是指针数组。如果p指向的是一个数组a,p表示的是数组a的第i个元素。p+i这是数组第i个 ...

p[i]表示的是数组a的第i个元素的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 18:42:11 | 显示全部楼层
本帖最后由 良弓无箭 于 2020-2-27 18:43 编辑

#include<stdio.h>
#include<stdlib.h>
main()
{
    int *p;
    int  i, n;
    scanf("%d",&n);
    p=(int *)malloc(n*sizeof( int ));
    for(i=0;i<n;++i)
    {
        scanf("%d",&p[i]);       //怎么说呢,p[i]相当于*(p+i),相当于把p中存的值取了出来,并不是地址。 scanf中需要的参数是地址。
                //p是你申请的一系列动态内存的首地址。p++指向下一个内存单元。p+i指向第i个内存单元。而&p[i]也是指向第i个内存单元。 
    free(p);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 01:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表