Mr.HO 发表于 2018-5-25 18:38:41

二级指针错误?

#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>


void GetMem(char **p)
{
        *p=400;
}


void GetMem1(char *p)
{
        *p=800;
}


void main()

{
        char *p1=NULL;
        char **p2=NULL;

        GetMem(&p1);
        printf("p1: %p\n",p1);
        GetMem1(&p1);
        printf("p1:%p\n",p1);




system("pause");
return;
}

ba21 发表于 2018-5-25 19:00:41

何意?你具体想说什么问题????

Mr.HO 发表于 2018-5-25 19:19:14

ba21 发表于 2018-5-25 19:00
何意?你具体想说什么问题????

第二次打赢P1应该是320,怎么会是120?

ba21 发表于 2018-5-25 21:17:41

本帖最后由 ba21 于 2018-5-25 21:22 编辑

Mr.HO 发表于 2018-5-25 19:19
第二次打赢P1应该是320,怎么会是120?

自己看图理解。还有要指出的是请正规化,别整些没用的;搞得自己头晕



#include <stdio.h>
#include<stdlib.h>
#include<string.h>


void a(int **p)
{
        int newa;
        newa = 520;

      *p=&newa;
}


void b(int *p)
{
      *p=800;
}


void main()

{
      int *p1=NULL;


      a(&p1);
                printf("p1 = %d\n", *p1);

      b(p1);

        printf("p1 = %d\n", *p1);


system("pause");
return;
}

Mr.HO 发表于 2018-5-25 23:46:42

ba21 发表于 2018-5-25 21:17
自己看图理解。还有要指出的是请正规化,别整些没用的;搞得自己头晕

类型错误了

Mr.HO 发表于 2018-5-26 00:09:41

#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>


void printp(char **p)
{


        printf("%p\n",p);
        printf("%p\n",*p);
        printf("%p\n",**p);
}

void printp1(char *p)
{


        printf("%p\n",p);
        printf("%p\n",*p);
}


void main()

{



        //char *p[]={"hojanan","hojing"};
        char *p="test";
        /*char **p1;
        char p2;
        char **********p3;
        char ****p4;
        */
        printp(&p);
        printf("\n");
        printp1(&p);
        //printf("%d %d %d%d%d",sizeof(p),sizeof(p1),sizeof(p2),sizeof(p3),sizeof(p4));


system("pause");
return;
}

Mr.HO 发表于 2018-5-26 00:10:11

#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>


void printp(char **p)
{


        printf("%p\n",p);
        printf("%p\n",*p);
        printf("%p\n",**p);
}

void printp1(char *p)
{


        printf("%p\n",p);
        printf("%p\n",*p);
}


void main()

{



        //char *p[]={"hojanan","hojing"};
        char *p="test";
        /*char **p1;
        char p2;
        char **********p3;
        char ****p4;
        */
        printp(&p);
        printf("\n");
        printp1(&p);
        //printf("%d %d %d%d%d",sizeof(p),sizeof(p1),sizeof(p2),sizeof(p3),sizeof(p4));


system("pause");
return;
}

Mr.HO 发表于 2018-5-26 00:10:52

#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>


void printp(char **p)
{


        printf("%p\n",p);
        printf("%p\n",*p);
        printf("%p\n",**p);
}

void printp1(char *p)
{


        printf("%p\n",p);
        printf("%p\n",*p);
}


void main()

{



        //char *p[]={"hojanan","hojing"};
        char *p="test";
        /*char **p1;
        char p2;
        char **********p3;
        char ****p4;
        */
        printp(&p);
        printf("\n");
        printp1(&p);
        //printf("%d %d %d%d%d",sizeof(p),sizeof(p1),sizeof(p2),sizeof(p3),sizeof(p4));


system("pause");
return;
}
页: [1]
查看完整版本: 二级指针错误?