VC++ char字符问题
voidaa(chara[3]){printf("%s\n",a)}main(){aa("abc");//为什么这样以函数的方式赋值不错,return0;}char[3]...
void aa(char a[3])
{
printf("%s\n",a)
}
main()
{
aa("abc");//为什么这样以函数的方式赋值不错,
return 0;
}
char[3]="abc";就会出错呢?要写成char[4]="abc";才行呢? 展开
{
printf("%s\n",a)
}
main()
{
aa("abc");//为什么这样以函数的方式赋值不错,
return 0;
}
char[3]="abc";就会出错呢?要写成char[4]="abc";才行呢? 展开
展开全部
"abc"相当于4个字符,依次是:'a','b','c','\0'
您可以写成 char buf[] = "abc";这时相当于buf[4];
在函数调用中,直接写aa("abc");
相当于
char buf[] = "abc";
aa(buf);//因为这个函数的形参是一个指针(数组名相当于指针)
直接写:char[3]="abc";相当于将四个字符存到三个地址空间中,没法存,就错了
您可以写成 char buf[] = "abc";这时相当于buf[4];
在函数调用中,直接写aa("abc");
相当于
char buf[] = "abc";
aa(buf);//因为这个函数的形参是一个指针(数组名相当于指针)
直接写:char[3]="abc";相当于将四个字符存到三个地址空间中,没法存,就错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"abc"实际上是四个字符,"abc\0",'\0'是作为字符串的结束符必须存在的。
而且一般不写成void aa(char a[3])这种函数,而是一般写成void aa(char *a, int len).
然后调用处aa("abc", strlen("abc"))
而且一般不写成void aa(char a[3])这种函数,而是一般写成void aa(char *a, int len).
然后调用处aa("abc", strlen("abc"))
追问
再请问下“&”什么时候是引用,什么时候是取地址
void aa(char *a[3])
{
printf("%s\n",a);
}
main()
{
char c[4]="abc";
aa(&c); //“&”取地址和引用不是太明白
return 0;
}
追答
引用应该只有三种形式
1:你定义的是引用变量
例:int a = 10;
int &b = a;
这种必须定义引用时必须初始化
2:就是函数的形参
void aa(int &a])
3:就是类或者结构体的成员变量,但是也必须在构造时马上初始化
除了上面这些一般都取地址
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询