hao123知道首页 > 动漫 > 详细问题分析解答内容页

C语言问题

网易新闻网用户在7个月前提交了关于“C语言问题”的提问,欢迎大家帮忙网友并涌跃发表自己的观点。char*str;str="Hello";与charstr[];str="Hello";这两个效果一样吗?期待您的回答,没有什么华丽的语言,但是我对你的感谢不会减少!
7个月前

2020-09-24最佳答案

第1个回答:

LV7个月前你什么教程上看到有charstr[];str="Hello";这样的语法?这个是不成立的,C语言的下标必须有内容,不能为空的这样可以charstr[]="Hello";它与char*str;str="Hello";对str的值,结果是一样的但对计算机内部的实现,及变量str是不同的对char*str;str="Hello";是将str指向了常量区,内容为"Hello";它的内容将是不可变的而charstr[]="Hello";会先申请6个字节给str变量,然后将"hello"复制到str中(效率相对比上面的差)这个str内容是可以改变的(注意,长度最多只能5个字符)


第2个回答:

匿名网友LV7个月前你这个咋说呢,两个都是错的,没有效果一样不一样的说法。先看指针这个:你看图片,运行出来,没有答案。原因是:首先,你没有对指针初始化,这个就是我们常说的“野指针”,然后,你的指针*str中str是个地址,它需要指向一块有意义的内存,*str表示取出str所指向的内存单元中的内容,需要让指针变量str指向有意义的地址,而你直接赋值,没有地址,没有内存。指针三要素:永远清楚每个指针指向了哪里,指针必须指向一块有意义的内存;永远清楚每个指针指向的对象的内容是什么;永远不要使用未初始化的指针。再看第二个,如果说第一个可以编译,但是语法上错误,那么第二个编译也通不过。在一维数组中,必须在a[]中填上数字,即必须要对数组长度进行声明,这个是对数组的大小进行定义,好能申请内存,如果省略的话,不明确数组长度,编译器无法识别,就会导致无法运行,是非法的。所以,你这个问题我只能这么说了,还有问题吗


希望hao123知道的回答,能够帮助到你。

热门分类提问

  • 手机数码 手机数码十大品牌,手机数码哪个品牌好。手机电脑等数码产品资讯,游戏资讯。

  • 商业理财 商业理财业务管理办法最新p2p公司排名年利率10%的商业理财