呵呵,问二个c语言的问题。
1.请问:pow(x,1.0/3),的意思是根号3,是不是pow()是立方根函数名?2.请问:设charstr[]="book";则执行printf("%d\n",siz...
1.请问:pow(x,1.0/3),的意思是根号3,是不是pow( )是立方根函数名?
2.请问:设char str[ ]="book";则执行 printf("%d\n",sizeof(str));后输出的值是 5;
我的想法是:char的字节数是1,所以后输出的值是 1;哪里错了? 展开
2.请问:设char str[ ]="book";则执行 printf("%d\n",sizeof(str));后输出的值是 5;
我的想法是:char的字节数是1,所以后输出的值是 1;哪里错了? 展开
4个回答
展开全部
pow 功能:计算x的y次幂。
pow(x,y) 就是x的y次方
如果y是2 那么结果就是 x的平方,
如果y是0.5 那么结果就是 x的平方根,
如果y是1/3 那么结果就是 x的立方根。
参考百度百科
数组的sizeof
数组的sizeof值等于数组所占用的内存字节数,如:
char a1[] = "abc";
int a2[3];
sizeof( a1 ); // 结果为4,字符 末尾还存在一个NULL终止符
sizeof( a2 ); // 结果为3*4=12(依赖于int)
一些朋友刚开始时把sizeof当作了求数组元素的个数,现在,你应该知道这是不对的,那么应该怎么求数组元素的个数呢Easy,通常有下面两种写法:
int c1 = sizeof( a1 ) / sizeof( char ); // 总长度/单个元素的长度
int c2 = sizeof( a1 ) / sizeof( a1[0] ); // 总长度/第一个元素的长度
写到这里,提一问,下面的c3,c4值应该是多少呢
void foo3(char a3[3])
{
int c3 = sizeof( a3 ); // c3 ==
}
void foo4(char a4[])
{
int c4 = sizeof( a4 ); // c4 ==
}
也许当你试图回答c4的值时已经意识到c3答错了,是的,c3!=3。这里函数参数a3已不再是数组类型,而是蜕变成指针,相当于char* a3,为什么仔细想想就不难明白,我们调用函数foo1时,程序会在栈上分配一个大小为3的数组吗不会!数组是“传址”的,调用者只需将实参的地址传递过去,所以a3自然为指针类型(char*),c3的值也就为4。
pow(x,y) 就是x的y次方
如果y是2 那么结果就是 x的平方,
如果y是0.5 那么结果就是 x的平方根,
如果y是1/3 那么结果就是 x的立方根。
参考百度百科
数组的sizeof
数组的sizeof值等于数组所占用的内存字节数,如:
char a1[] = "abc";
int a2[3];
sizeof( a1 ); // 结果为4,字符 末尾还存在一个NULL终止符
sizeof( a2 ); // 结果为3*4=12(依赖于int)
一些朋友刚开始时把sizeof当作了求数组元素的个数,现在,你应该知道这是不对的,那么应该怎么求数组元素的个数呢Easy,通常有下面两种写法:
int c1 = sizeof( a1 ) / sizeof( char ); // 总长度/单个元素的长度
int c2 = sizeof( a1 ) / sizeof( a1[0] ); // 总长度/第一个元素的长度
写到这里,提一问,下面的c3,c4值应该是多少呢
void foo3(char a3[3])
{
int c3 = sizeof( a3 ); // c3 ==
}
void foo4(char a4[])
{
int c4 = sizeof( a4 ); // c4 ==
}
也许当你试图回答c4的值时已经意识到c3答错了,是的,c3!=3。这里函数参数a3已不再是数组类型,而是蜕变成指针,相当于char* a3,为什么仔细想想就不难明白,我们调用函数foo1时,程序会在栈上分配一个大小为3的数组吗不会!数组是“传址”的,调用者只需将实参的地址传递过去,所以a3自然为指针类型(char*),c3的值也就为4。
参考资料: http://baike.baidu.com/view/1078660.htm
展开全部
第一个问题,pow 是乘方的函数名。 pow (x, 2) 表示 x 的平方, pow(x,1.0/3) 表示 x 的 1/3 次方,相当于开立方根。
第二个问题,sizeof(str) 求的是字符串 str 的长度,字符串 str 拥有 4 个字母,加上一个结束标志 '\0',一个 5 个字符,每个字符都是 char 类型,各占用一个字节,所以输出的是 5。
第二个问题,sizeof(str) 求的是字符串 str 的长度,字符串 str 拥有 4 个字母,加上一个结束标志 '\0',一个 5 个字符,每个字符都是 char 类型,各占用一个字节,所以输出的是 5。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一题 extern float pow(float x, float y); 计算x的y次幂。 说明:x应大于零,返回幂指数的结果。
第二题, char的字节数是一
但char[] 是字符数组 一个字符是一 “book“ 4个 字符 字节就是 4 字符串结尾会自动补一个表示字符串结尾的字符'\0' 所以一个5个字节
第二题, char的字节数是一
但char[] 是字符数组 一个字符是一 “book“ 4个 字符 字节就是 4 字符串结尾会自动补一个表示字符串结尾的字符'\0' 所以一个5个字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.不是
2.str[ ]是用char类型定义的数组,b、o、o、k各占一个字节,也就是四个了,其实还有一个“\n"代表结束也算一个字节,这是默认加上去的,所以最后是五个。
2.str[ ]是用char类型定义的数组,b、o、o、k各占一个字节,也就是四个了,其实还有一个“\n"代表结束也算一个字节,这是默认加上去的,所以最后是五个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询