sizeof(char*) 什么意思? L.elem=(char *)malloc(50*sizeo...

C\u8bed\u8a00\u91ccsizeof\uff08char\uff09\u662f\u4ec0\u4e48\u610f\u601d

sizeof() \u662f\u4e00\u79cd\u5185\u5b58\u5bb9\u91cf\u5ea6\u91cf\u51fd\u6570\uff0c\u529f\u80fd\u662f\u8fd4\u56de\u4e00\u4e2a\u53d8\u91cf\u6216\u8005\u7c7b\u578b\u7684\u5927\u5c0f\uff08\u4ee5\u5b57\u8282\u4e3a\u5355\u4f4d\uff09\u3002
char\u662fc\u8bed\u8a00\u4e2d\u57fa\u672c\u7c7b\u578b\uff0c\u4e00\u822cchar\u7c7b\u578b\u53601\u4e2a\u5b57\u8282\u3002
sizeof\uff08char\uff09\u7684\u7ed3\u679c\u662f\uff0c1\u3002
sizeof\uff1a\u8ba1\u7b97\u6570\u636e\u7c7b\u578b\u957f\u5ea6
char = 1
int 2,
long 4
int a[6];
sizeof \uff08a\uff09 2*6= 12
\u5355\u4f4d\u90fd\u662f\u5b57\u8282\u3002
float 4

\u6269\u5c55\u8d44\u6599\uff1a
\u5728 Pascal \u8bed\u8a00\u4e2d\uff0csizeof() \u662f\u4e00\u79cd\u5185\u5b58\u5bb9\u91cf\u5ea6\u91cf\u51fd\u6570\uff0c\u529f\u80fd\u662f\u8fd4\u56de\u4e00\u4e2a\u53d8\u91cf\u6216\u8005\u7c7b\u578b\u7684\u5927\u5c0f\uff08\u4ee5\u5b57\u8282\u4e3a\u5355\u4f4d\uff09\uff1b\u5728 C \u8bed\u8a00\u4e2d\uff0csizeof() \u662f\u4e00\u4e2a\u5224\u65ad\u6570\u636e\u7c7b\u578b\u6216\u8005\u8868\u8fbe\u5f0f\u957f\u5ea6\u7684\u8fd0\u7b97\u7b26\u3002
\u5b9a\u4e49
sizeof\u662fC/C++\u4e2d\u7684\u4e00\u4e2a\u64cd\u4f5c\u7b26\uff08operator\uff09\uff0c\u7b80\u5355\u7684\u8bf4\u5176\u4f5c\u7528\u5c31\u662f\u8fd4\u56de\u4e00\u4e2a\u5bf9\u8c61\u6216\u8005\u7c7b\u578b\u6240\u5360\u7684\u5185\u5b58\u5b57\u8282\u6570\u3002
MSDN\u4e0a\u7684\u89e3\u91ca\u4e3a\uff1a
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t.
\u5176\u8fd4\u56de\u503c\u7c7b\u578b\u4e3asize_t\uff0c\u5728\u5934\u6587\u4ef6stddef.h\u4e2d\u5b9a\u4e49\u3002\u8fd9\u662f\u4e00\u4e2a\u4f9d\u8d56\u4e8e\u7f16\u8bd1\u7cfb\u7edf\u7684\u503c\uff0c\u4e00\u822c\u5b9a\u4e49\u4e3a\uff1a

typedef unsigned int size_t;\u53c2\u8003\u8d44\u6599\u6765\u6e90\uff1a\u767e\u5ea6\u767e\u79d1-sizeof

elem\u662f\u7c7bL\u4e2d\u7684\u4e00\u4e2a\u6210\u5458\u53d8\u91cf:
char *elem;

L.elem=(char *)malloc(50*sizeof(char));
\u7ed9 elem \u52a8\u6001\u5206\u914d50\u4e2a\u5b57\u7b26\u5355\u5143\uff0c\u8fd4\u56dechar\u578b\u6307\u9488\uff0c\u6307\u5411\u5b57\u7b26\u5355\u5143\u7684\u9996\u5730\u5740\u3002

\u5982\u679c\u52a8\u6001\u5206\u914d\u6210\u529f\uff0c\u63a5\u7740\u4f60\u53ef\u4ee5\u628a
char *elem;
\u770b\u6210 char elem[50];
\u5728\u7a0b\u5e8f\u4e2d\u4f7f\u7528\u3002

\u52a8\u6001\u5206\u914d\u6210\u529f\u6216\u5931\u8d25\u6d4b\u8bd5\u6cd5\uff1a
if ( ! L.elem){ \u52a8\u6001\u5206\u914d\u5931\u8d25} else {\u52a8\u6001\u5206\u914d\u6210\u529f};

sizeof(char*) 返回字符型指针所占内存的大小,值为4,所有指针的大小值都为4,注意~是指针,不管是什么型的。
而sizeof(char) 则是返回char类型所占的内存大小,值为1,不同类型所占内存不一定相同,即使相同,对于数值的辨认也不同,建议翻一翻相关书籍~

这个语句的意思是得到 char* 类型的字节数, char* 是一个指针类型,占4个字节,所以运行结果应该是4.

1、sizeof()()的功能:计算数据空间的字节数。
2、sizeof(char*) 结果是一个字符指针所占的字节数。

就是返回指针的长度,sizeof(char*)=4;再如sizeof(char)=1

计算出char指针的大小

扩展阅读:sizeof double ... uint unsigned int ... sizeof(int) ... sizeof short ... sizeof long ... sizeofchar a 10 ... sizeof(x) ... c语言中sizeof的用法 ... abercrombie&fitch ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网