程序能编译成功但是运行出错,感觉是函数参数错了,求告知怎么改?
#include <stdio.h>void print_ch(char *ch);
int main(void)
{
char *ch[] = { "1", "2" };
print_ch(ch);
}
void print_ch(char *ch)
{
printf("%s",ch);
} 函数参数为 char **ch 或者char *ch[] 本帖最后由 fc1735 于 2016-11-5 01:08 编辑
#include <stdio.h>
void print_ch(char *ch);
int main(void)
{
char *ch[] = { "1", "2" };
print_ch(ch);//类型不相同的警告,但这是编译器的事,不影响,可以不理会 。(指向 指向字符的 到指向字符的)
}
void print_ch(char *ch)
{
printf("%s",ch); //但是这里会有问题,编译器在这里认定ch 是指向字符的,ch+4 到ch+7这段内存储存的是字符串"2"的地址,但它只取ch+4这个byte当作字元解读。
}
解决办法之一是把void print_ch(char *ch); 改成void print_ch(int *ch);因为int也占4个byte 指向int的, 在取值的时候也是抓4个位置
但是最好的办法是想清楚每个指针的实质意义,避免类型不同的计算 Krant5 发表于 2016-11-5 00:39
函数参数为 char **ch 或者char *ch[]
谢谢
fc1735 发表于 2016-11-5 01:01
#include
void print_ch(char *ch);
int main(void)
谢谢
页:
[1]