首页 > 代码库 > 二级指针
二级指针
目标:分配一段内存,内存用于存储指针。
代码:
#include <stdio.h>#include <stdlib.h>void test(char **p, char *str, char *str2){ printf("p:%p\n", p); /* p指向malloc分配的内存起始地址 x */ printf("&p:%p\n", &p); /* &p为入参p自己本身的地址 x2 */ printf("*p:%p\n", *p); /* *p此时为NULL */ *p = str; printf("*p:%p\n", *p); /* *p此时为str的地址 */ p++; /* 向后偏移一个指针类型大小到 x + 4 */ printf("p:%p\n", p); printf("&p:%p\n", &p); *p = str2; printf("*p+1:%p\n", *p); /* *p此时为str2的地址 */}int main(){ char *str = "abc"; char *str2 = "abcdef"; printf("str:%p\n", str); printf("str2:%p\n", str2); char **p = malloc(8*sizeof(char *)); printf("p:%p\n", p); /* p指向malloc分配的内存起始地址 x */ printf("&p:%p\n", &p); /* &p为指针变量p自己本身的地址 x1 */ printf("*p:%p\n", *p); /* *p此时为NULL */ test(p, str, str2); printf("p:%p\n", p); printf("&p:%p\n", &p); printf("*p:%p\n", *p); /* 此时为str的地址 */ printf("p:%p\n", *(p+1)); /* 此时为str2的地址 */
printf("p:%p\n", p[1]); /* 此时为str2的地址,同*(p+1) */
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。