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]);
这样就会不同
------解决方案--------------------
------解决方案--------------------
你这是一个字符串常量指针数组,字符串的值是不会存在数组里的,存的只有指针。
sizeof获取的是指针的宽度。要想得到字符串的话请用strlen()
------解决方案--------------------
多看,多记,多想!
------解决方案--------------------
数组在空间所占的内存,另一个是数组元素所占大小
------解决方案--------------------
keyword 是一個指針數組,數組的每一項都是一個指針。
------解决方案--------------------
6l正解
------解决方案--------------------
注意区分strlen()和sizeof().
------解决方案--------------------
- C/C++ code
#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; }
------解决方案--------------------
- C/C++ code