马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char (*string)[1073741824];
int main(int argc, char const *argv[])
{
string str = "hello world. C language";//这里会不会造成内存浪费
printf("%s\nstrlen = %d", str, strlen(str));
return 0;
}
----------------------------------------------------------------------------------------------
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-efcabpzv.ne3 --stdout=Microsoft-MIEngine-Out-izw5pvjk.r0n --stderr=Microsoft-MIEngine-Error-00tr0bdo.3xi --pid=Microsoft-MIEngine-Pid-2ediibw0.1uq --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
hello world. C language
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-eo2fmebd.hod --stdout=Microsoft-MIEngine-Out-ymy0kpvm.nzo --stderr=Microsoft-MIEngine-Error-q1j1so3z.55y --pid=Microsoft-MIEngine-Pid-i2xvi1ja.atg --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
hello world. C language
strlen = 23
E:\Administrator\Documents\My C>
=======================================================
如题:这样定义的str字符串,会不会有内存浪费的嫌疑
实质上typedef char (*string)[1073741824]; 在底层等同于typedef char (*string); ,只是表达的意义不同而已
或者上边typedef看不懂的话最简单的例子就是
char *str = "hello world. C language";
这三者在实现机制上都是等价的
|