| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1586 人关注过本帖
标题:想问个新手问题 - 关于字元运用
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用wube在2015-1-19 14:53:51的发言:

先谢谢版主的回答,不过我是想问什么时候用哪种比较好,
除了它们是动态配置和静态配置的区别外,
还有什么是编程时选用的标准吗?



这个好像也没啥标准,我觉得小规模分配内存  (不至于导致堆栈崩溃的) 就静态分配吧    有些场合不知道该分配多少合适 就动态分配吧

DO IT YOURSELF !
2015-01-19 15:41
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
个人经验是在副程式中使用阵列时,用char A[256]比较危险,常常崩溃。
改用char *A = char[256]就会变正常了。这也是不思不解很神奇的状况之一。

不要選我當版主
2015-01-19 16:03
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用wube在2015-1-19 16:03:07的发言:

个人经验是在副程式中使用阵列时,用char A[256]比较危险,常常崩溃。
改用char *A = char[256]就会变正常了。这也是不思不解很神奇的状况之一。


这2个完全是2个概念

第一个  char A[256] 是声明了一个字符数组  (一个字符串的概念)

第二个 char *A = char[256] 是声明了一个字符串数组 ( 多了一个串字  实际上是多个字符串的概念 )

完全不一样的2种声明

DO IT YOURSELF !
2015-01-19 16:06
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
不太懂?多个字符串不就是二维了吗?
char **A = new char*[256];
    for(int i=0;i<256;i++)
    *A = new char[256];

不要選我當版主
2015-01-19 16:16
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
嗯,今天状态不好  又看错了  是 char *A[] =.....  代表字符串数组

不好意思了

DO IT YOURSELF !
2015-01-19 16:20
lu3664198
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:185
注 册:2014-11-16
收藏
得分:3 
....为什么我只能看到楼主一个人在自问自答

wwwwwww...~~;
本人为大一新生,说的不好不要拍我 ~ ( ̄~ ̄) ;
2015-01-19 17:11
lu3664198
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:55
专家分:185
注 册:2014-11-16
收藏
得分:0 
回复 16楼 lu3664198
原来点了只看楼主...

wwwwwww...~~;
本人为大一新生,说的不好不要拍我 ~ ( ̄~ ̄) ;
2015-01-19 17:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:3 
以下是引用wube在2015-1-19 14:30:52的发言:

一直不懂char A[256]和char *A之间有何不同 ?
我知道char A[256]是在内存开一个256空间的位置放资料,最多只能放256个字.
而char *A是由电脑(或是编译器)选定一个内存起始位置,存放未知长度的字元资料.
但是我不知道什么情况用哪种比较适当?有什么比较明确的标准吗?(假设字串长度不是问题)
 
原因之一是,最近常遇到原本申请的内存位址,其中存放的资料,之后却被之后申请的内存资料覆盖到
(理论上不可能发生,实际上常遇到),导致程式当掉,虽然可以解决,但是还是想知道原因.

 
所以我猜测是不是跟char A[256]和char *A之间有关系.
 
抱歉没什么分数可给了...

是指針亂指造成的覆蓋。

授人以渔,不授人以鱼。
2015-01-19 21:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C的千年困擾,就是指針。

授人以渔,不授人以鱼。
2015-01-19 22:02
biu_biu_biu
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2015-1-19
收藏
得分:3 
在C语言中 char A[256]表示一个可以赋256个字符的数组 同时在定义char类型时 一个char 占用一个字节 所以A[256]占有256字节 而 char *A代表的是 指向一个字符地址的指针变量  在给*A赋值前 A随机指向一个地址 但是在赋值后 A就代表变量的地址值 *A代表该地址说代表的具体值
2015-01-19 22:21
快速回复:想问个新手问题 - 关于字元运用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.099574 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved