字符串数组和二级指针

int main(int argc, char *argv[])
{
    const char *str[] = {"man","woman","girl","boy","sister"};
    const char **p = NULL;
    // str[0]是一个指针变量,存放的是字符串常量的地址
    printf("%d %d\n", str[0], &str[0]);
    printf("%d %d\n", sizeof(str[0]), sizeof(&str[0]));
    printf("#%s# #%s#\n", str[0], &str[0]);
    // 数组名当做指针用
    for (int i = 0; i < 4; i++) {
        printf("%d %d %s\n", *(str+i), str+i, *(str+i));
    }
    // 从上面变量的定义可以看到,在使用上*p可以当做str[],那么p可以当做&str[]。
    for (int i = 0; i < 4; i++) {
        p = &str[i];
        printf("%s ", *p);
    }

    return 1;
}

输出:
4210688 6421984
8 8
#man# ##
4210688 6421984 man
4210692 6421992 woman
4210698 6422000 girl
4210703 6422008 boy
man woman girl boy

 

posted @ 2023-04-19 17:04  jason8826  阅读(40)  评论(0)    收藏  举报