bin554385863 发表于 2019-6-23 10:59:39

typedef和内存浪费

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char (*string);
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字符串,会不会有内存浪费的嫌疑

newu 发表于 2019-6-23 11:03:36

本帖最后由 newu 于 2019-6-23 11:06 编辑

口误,不会浪费的,因为他无论多大只是一个指针而已,占4字节,

newu 发表于 2019-6-23 11:21:39

实质上typedef char (*string); 在底层等同于typedef char (*string); ,只是表达的意义不同而已

或者上边typedef看不懂的话最简单的例子就是
char *str = "hello world. C language";

这三者在实现机制上都是等价的
页: [1]
查看完整版本: typedef和内存浪费