正在学习c 指针传参这一块
正在学习c 指针传参这一块, 我想动太申请3块内存,其中各存一个字符串
,然后再动态审请一块内在,长度为 3 * sizeof(char*),里面存这3块字符串对应的首地址,
然后将其通过传出参数传出。但是始终调不通,求高手帮忙 。
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>mc(char*** str){ char* s1=(char*)malloc(10); char* s2=(char*)malloc(10); char* s3=(char*)malloc(10); char **ss,**p; s1="hello"; s2="world"; s3="god"; /* printf ("%p,%p,%p\n",&s1,&s2,&s3); */ ss= (char**)calloc(3,sizeof(char*)); p=ss; p= (&s1); p++; p= &s2; p++; p= &s3; p++; /* printf ("%p\n",p); */ *str=ss;}int main(int argc, char *argv[]){ char** str; int i; mc(&str); printf ("%p\n",*str); return 0;}#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>void mc(char*** str){ char* s1=(char*)malloc(sizeof(char)*10); char* s2=(char*)malloc(sizeof(char)*10); char* s3=(char*)malloc(sizeof(char)*10); char **ss,**p; strcpy(s1,"hello"); strcpy(s2,"world"); strcpy(s3,"god"); printf ("%p,%p,%p\n",s1,s2,s3); ss= (char**)calloc(3,sizeof(char*)); p=ss; *p= s1; p++; *p= s2; p++; *p= s3; p++; /* printf ("%p\n",p); */ *str=ss;}int main(int argc, char *argv[]){ char** str; int i; mc(&str); printf ("%p\n",*str); str++; printf ("%p\n",*str); str++; printf ("%p\n",*str); return 0;}