要存储一个含有9个字符的字符串,要申请几个字节的char数组?9个还是10个? 用char * g_szHostName=new char[10];可以吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用char * g_szHostName=new char[10];可以吗? 10个比较保险char * g_szHostName=new char[10];char g_szHostName[10];效果是一样的吧?有什么区别? char * g_szHostName=new char[10];char g_szHostName[10];第一行是分配一块内存,程序结束前须手动释放内存,否则它一直不会被OS收回,除非你重起;第二行就不存在这个问题了 要有一个结束的标志,就是'\0',其ASCII就是0 怎么又问这个问题,当然是10个了,最后一个用来放字符串结尾标识Null 是的,这个我知道了呀char * g_szHostName=new char[10];char g_szHostName[10];这两种方法分别适用于什么情况? 第一种会立刻产生一个隐藏的构造函数调用,而在程序代码中看不出来。若内存申请成功,new运算返回一个指向新分配内存首地址的char类型的指针,可以通过这个返回值对堆对象进行访问,如果申请失败返回空指针。由delete删除new建立的对象,释放指针所指向的内存空间。 手动delete嘛,与new一一对应哦 如果只通过下标访问单个的字符,9个是不会错。如果想用strlen..., printf("%s",...),就要仔细考虑一下了。 如果你知道只有9个,那么只要9个byte就够了,节约是中国人民的传统美德嘛! 你要是不使用字符串函数(strlen()类似的)就不必分配10个字节,比如,你只是暂时转储一下,待会儿写入文件或转移到其他地方,当然不会不知道它有多少个有效的字节啦。总之,“亲自动手”处理时9个字节也可以。例:char str[] = "long string goes here"; //more than 9 charschar buf[9]; //only 9 charschar *p1 = str,*p2 = buf;//copy from str -> buffor(int i=0;i<9;i++) *p2++ = *p1++; //no matter 10(因为还包括一个字符串结束标志'/0',ascII码为0)如果不是有特别需要,为什么不用char string[]="……",何乐而不为呢? to idler(Idler) 32位 局部变量 9个和12个 使用一样多的空间.16位 局部变量 9个和10个 使用一样多的空间.可以使用边界有的编译器可以使用边界值控制选项或指令.分配空间的变量dos是16以个为单位.其他的系统是多少有谁能告诉我? 先申请一个空的char str[]='123456789';再sizeof(str)不就知道了 获取焦点窗口路径 魔兽世界模拟鼠标操作不起作用?? 如何设置组合框的默认值???多谢 关于ellipse的问题 编程寻找浩方窗口 gif动画的格式,除了87a,89a,还有其它的种类吗? 对VC不熟,征求一个简单的COM客户端程序(200分分次发) 看不出数组大小的变化 我有例子代码 编译openssl-1.0.1g出错。 为什么说无状态对象有可伸缩性?? 函数重载,和虚函数的功能,请帮我解释解释..好吗?
char * g_szHostName=new char[10];
可以吗?
char * g_szHostName=new char[10];
char g_szHostName[10];
效果是一样的吧?有什么区别?
char g_szHostName[10];
第一行是分配一块内存,程序结束前须手动释放内存,否则它一直不会被OS收回,除非你重起;
第二行就不存在这个问题了
char * g_szHostName=new char[10];
char g_szHostName[10];
这两种方法分别适用于什么情况?
如果想用strlen..., printf("%s",...),就要仔细考虑一下了。
总之,“亲自动手”处理时9个字节也可以。
例:
char str[] = "long string goes here"; //more than 9 chars
char buf[9]; //only 9 chars
char *p1 = str,*p2 = buf;
//copy from str -> buf
for(int i=0;i<9;i++) *p2++ = *p1++; //no matter
如果不是有特别需要,为什么不用
char string[]="……",何乐而不为呢?
32位 局部变量 9个和12个 使用一样多的空间.
16位 局部变量 9个和10个 使用一样多的空间.
可以使用边界有的编译器可以使用边界值控制选项或指令.
分配空间的变量dos是16以个为单位.
其他的系统是多少有谁能告诉我?
char str[]='123456789';
再sizeof(str)不就知道了