指针 数组 退化问题
数组退化成指针以后,好像是没办法在回到数组了。
不过我就考虑字符串行不行的。
有一个比较特殊的字符串。
"a\0b\0d\0"
这个字符串我想让他回到字符串的数组去。
就是
"a\0"
"b\0"
"c\0"
不拷贝内存行不,我在考虑。
c和c++在这个问题上又有何区别
[解决办法]
这个是字符串数组吧、、
char s2[]={'a','\0','b','\0','c','\0'};
我以为您的需求是这样的。
[解决办法]
从某种意义上来说,数组和指针没什么实质的区别。
[解决办法]
// "abc\0","bcde\0" -> 这样的2个连续字符串,传到某个函数里面以后,想简化成
//
// *(a[2])
// a[0] -> 直接访问abc\0
// a[1] -> 直接访问bcde\0
//
// 或者
//
// "abc","bcde" -> 这样的2个连续字符数组,传到某个函数里面以后,想简化成
//
// *(a[2])
// a[0] -> 直接访问abc
// a[1] -> 直接访问bcde
#include <stdio.h>
#include <string.h>
char s1[]="abc\0bcde";
char *s2[2]={"abc","bcde"};
void func1(void *p) {
char *a[2];
a[0]=(char *)p;
a[1]=(char *)p+strlen((char *)p)+1;
printf("func1\n");
printf("a[0]==[%s],a[1]==[%s]\n",a[0],a[1]);
}
void func2(void *p) {
char *a[2];
a[0]=((char **)p)[0];
a[1]=((char **)p)[1];
printf("func2\n");
printf("a[0]==[%s],a[1]==[%s]\n",a[0],a[1]);
}
int main() {
func1(s1);
func2(s2);
return 0;
}
//func1
//a[0]==[abc],a[1]==[bcde]
//func2
//a[0]==[abc],a[1]==[bcde]