#include <stdio.h>

struct {
char c;
char *pc;
} a;
int main(int argc, char* argv[])
{
char *p=&a.c;
p[0]=0;
p[1]=0;
p[2]=0;
p[3]=0;
p[4]=0;
p[5]=0;
a.pc=p; // 00

展开全部
收起
3回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 树根

    17人对此回答表示赞同

    变量a是结构类型变量
    变量p是字符类型指针
    所以,指针p是不能用于记录变量a的地址的!
    同时,a仅仅是一个结构类型的变量,在p=&a的情况下 p是不能够使用的下标的
    后面变量引用的逻辑关系是错误的。
    看起来你对指针应用的基本概念还不太清楚,一个没有被正确初始化的指针是不能直接使用的。
    展开
    17
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Brooklyn

    11人对此回答表示赞同

    #include <stdio.h>

    typedef struct {
    char *pc;
    char c;
    }a;

    int main()
    {
    int i;
    a p[6];
    p[5].pc=0;
    p[4].pc=0;
    p[3].pc=0;
    p[2].pc=0;
    p[1].pc=0;
    p[0].pc=0;
    展开
    11
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Ellie3

    5人对此回答表示赞同

    a.pc = p;之前的语句都是起干扰作用,可以直接忽略。
    且看a.pc = p之后,a.pc这个指针指向a.c,也就是结构提a的起始地址,
    则有下图可以看到a.pc[0]到a.pc[7]所指向的内存如下
    (注意32位编译器默认的4字节对齐):

    +-----------------------------+
    | a.c | // a.pc[0]
    +-----------
    展开
    5
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部