c语言,多重指针。例如int **p,intq,如果p=q,那么p=&q对吗

Python020

c语言,多重指针。例如int **p,intq,如果p=q,那么p=&q对吗,第1张

int **p p是二级指针

int qq是整型变量。

那么 p=q本身就是不对的。

p=&q一样不对。

都是类型不匹配。 p二级指针, &q一级指针。 q整型变量。 这三个类型都不一样。

正确做法是

int **p, *p1, q

p1=&q

p=&p1

这样类型才是对的。

#include <malloc.h>

#include <stdio.h>

#include <stdlib.h>

int main()

{

    char **p, i

    p = (char **) malloc(sizeof(char *) * 50)

    for (i = 0 i < 50 i ++)

        p[i] = (char *) malloc(sizeof(char) * 50)

    for (i = 0 i < 50 i ++)

        sprintf(p[i], "This is string %d.", i)

    for (i = 0 i < 50 i ++)

    {

        printf("%s\n", p[i])

        getch()

    }

    return 0

}

可以看出这里 p 是一个二维数组。

这就是二维数组的原理。

int **p 就是 int * (*p)

显然,*p是一个指针,编译器也得给它安排4字节的内存来存储它的值,int **p就是指向这块内存的指针,它的字面值就是这块内存的首地址