有关sizeof与指针数组
char const *keyword[]={
"do",
"for",
"if",
"register",
"return",
"switch",
"while"
};
求sizeof(keyword)/sizeof(keyword[0]))
我现在有些越琢磨越糊涂,keyword和keyword[0]都代表什么,sizeof这两个值结果所多少?
[解决办法]
keyword是一个字符串数组,keyword[0]代表字符串数组里的第一个元素也就是第一个字符串“do”,
[解决办法]
keyword 是一个由7个元素为char const *组成数组,keyword[0]自然就是其中一个元素char const *
[解决办法]
keyword只是一个指针 sizeof得到的值 4
最后得到的 结果2
[解决办法]
和countof是一个作用啊, 就是计算数组元素的个数的
[解决办法]
弱弱回答一下, 这个不是求数组长度嘛?
[解决办法]
keyword本身是一个数组
sizeof一个数组,指数组的大小,
数组里面存的是指针,指针是4个字节,
所以总共是28个字节
28/4=7
就是7个字符串
[解决办法]
keyword是一个数组,其中的类型是指针类型
共有7个,所以sizeof(keyword)=7*4=28
而keyword[0]是一个指针,所以sizeof(keyword[0])=4
在32位机器上面
[解决办法]
数组名就是内存自动分配的首地址,求sizeof的时候就是求这块地址的内存的大小,数组的第一个数从0开始
感觉LS理解有误,
char a[100];
int b[100];
int len = sizeof(a)/sizeof(b[0]);
这样就会不同
[解决办法]
#include <string.h>#include <stdio.h>int main(int argc, char **argv){ char const *keyword[]={ "do", "for", "if", "register", "return", "switch", "while" }; int i, size; size = sizeof(keyword)/sizeof(keyword[0]);//sizeof(keyword); printf("there are %d items in this array.\r\n", size); for(i = 0; i < size; i++) { printf("sizeof(keyword[%d]) = %d\r\n", i, sizeof(keyword[i])); printf("strlen(keyword[%d]) = %d -> %s\r\n", i, strlen(keyword[i]), keyword[i]); } return 0;}
[解决办法]
#include <string.h>#include <stdio.h>int main(int argc, char **argv){ char const *keyword[]={ "do", "for", "if", "register", "return", "switch", "while" }; int i, size; size = sizeof(keyword)/sizeof(keyword[0]);//sizeof(keyword); printf("there are %d items in this array.\r\n", size); for(i = 0; i < size; i++) { printf("sizeof(keyword[%d]) = %d\r\n", i, sizeof(keyword[i])); printf("strlen(keyword[%d]) = %d -> %s\r\n", i, strlen(keyword[i]), keyword[i]); } return 0;}
[解决办法]
[code=C/C++]
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
char const *keyword[]={
"do ",
"for ",
"if ",
"register ",
"return ",
"switch ",
"while "
};
int i, size;
size = sizeof(keyword)/sizeof(keyword[0]);//sizeof(keyword);
printf( "there are %d items in this array.\r\n ", size);
for(i = 0; i < size; i++)
{
printf( "sizeof(keyword[%d]) = %d\r\n ", i, sizeof(keyword[i]));
printf( "strlen(keyword[%d]) = %d -> %s\r\n ", i, strlen(keyword[i]), keyword[i]);
}
return 0;
}
[/code]
$ ./app_sizeof
there are 7 items in this array.
sizeof(keyword[0]) = 4
strlen(keyword[0]) = 2 -> do
sizeof(keyword[1]) = 4
strlen(keyword[1]) = 3 -> for
sizeof(keyword[2]) = 4
strlen(keyword[2]) = 2 -> if
sizeof(keyword[3]) = 4
strlen(keyword[3]) = 8 -> register
sizeof(keyword[4]) = 4
strlen(keyword[4]) = 6 -> return
sizeof(keyword[5]) = 4
strlen(keyword[5]) = 6 -> switch
sizeof(keyword[6]) = 4
strlen(keyword[6]) = 5 -> while
求sizeof(keyword)/sizeof(keyword[0]))
==》 代表数组里面有几个元素。sizeof(keyword) 数组大小, sizeof(keyword[0]) 元素大小。 关于元素大小和每个元素指向的字符串大小请见上面结果。
[解决办法]
我是来接分的。。
[解决办法]
我刚才回复的,怎么没有出来。