为什么数组上的 sizeof 运算符会给出不正确的结果?
Why does sizeof operator on an array give incorrect result?
这是我的代码。
#include <iostream>
#include<sstream>
using namespace std;
int main()
{
ostringstream outStr;
const char* strArray[]= {"Hi","How" ,"Howhuw","bdeuvc"};
int n;
cout << sizeof(strArray);
}
为什么我得到输出 32?有人可以向我解释一下吗?我知道我这里有一个包含 4 个元素的数组,但它的大小是 32 吗?
字符数组中 " "
内的每个字符数组消耗 8 bytes
这就是为什么输出为 32 bytes
如果您在其中添加一个字符串,它将显示40 bytes
.
Sizeof returns 字节大小。
char x = 'a';
cout << sizeof(x); // this would be 1
这意味着字符数组所占的space是他们的count * 1 byte
int
在大多数现代机器上是 32 位(4 字节)
如果有,假设 int array[] = { 1, 2, 3, 4, 5 }
并且您想获取其元素的数量,您可以执行以下操作:
cout << sizeof(array)/sizeof(int); // (20 / 4) -> 5
编辑:
您在这里声明的内容:
const char* strArray[]= {"Hi","How" ,"Howhuw","bdeuvc"};
这是一个包含4个char*
(字符指针)的数组。你机器上的char指针大小是8字节。
char* x = "a";
cout << sizeof(x);
指针是一个变量(您可以将其视为一个整数),它在内存中保存它所指向的变量开始处的地址:
strArray[0] 指向“Hi”开始的内存地址。
strArray[1] 指向“How”开始的内存地址。
...等等
这是我的代码。
#include <iostream>
#include<sstream>
using namespace std;
int main()
{
ostringstream outStr;
const char* strArray[]= {"Hi","How" ,"Howhuw","bdeuvc"};
int n;
cout << sizeof(strArray);
}
为什么我得到输出 32?有人可以向我解释一下吗?我知道我这里有一个包含 4 个元素的数组,但它的大小是 32 吗?
字符数组中 " "
内的每个字符数组消耗 8 bytes
这就是为什么输出为 32 bytes
如果您在其中添加一个字符串,它将显示40 bytes
.
Sizeof returns 字节大小。
char x = 'a';
cout << sizeof(x); // this would be 1
这意味着字符数组所占的space是他们的count * 1 byte
int
在大多数现代机器上是 32 位(4 字节)
如果有,假设 int array[] = { 1, 2, 3, 4, 5 }
并且您想获取其元素的数量,您可以执行以下操作:
cout << sizeof(array)/sizeof(int); // (20 / 4) -> 5
编辑:
您在这里声明的内容:
const char* strArray[]= {"Hi","How" ,"Howhuw","bdeuvc"};
这是一个包含4个char*
(字符指针)的数组。你机器上的char指针大小是8字节。
char* x = "a";
cout << sizeof(x);
指针是一个变量(您可以将其视为一个整数),它在内存中保存它所指向的变量开始处的地址:
strArray[0] 指向“Hi”开始的内存地址。
strArray[1] 指向“How”开始的内存地址。
...等等