二维字符数组与指针指问题请教

来源:百度知道 编辑:UC知道 时间:2024/06/18 06:11:46
我的程序是这样的,
char str[][30]={
“Basic”,
“bbbbbb”;
“cccccccc”
};
int get_strlen(char *str)
{
int len=0
while((*(str++))!='\0') len++;
return len;
}
void main(void)
{
int len;
char *p;

p=&str[0][0];

len=get_strlen(p); //1
//len=get_strlen(&str[0][0]); //2
}
用1获取长度时结果为3,与实际不符,实际应该为5啊,而用下面那一句2就可以,得出的结果就是5,不知是为什么,怎么用类似方法1得出正确的结果呢

把你的程序稍微改了一下,得出正确答案。
#include <stdio.h>
char str[][30]={
"Basic",
"bbbbbb",
"cccccccc"
};
int get_strlen(char *str)
{
int len=0;
while((*(str++))!='\0') len++;
return len;
}
void main(void)
{
int len;
char *p;

p=&str[0][0];

len=get_strlen(p); //1
printf("%d",len);

//len=get_strlen(&str[0][0]); //2
}

呵呵.你把指针定义为char (*p)[30]再试试.朋友.