C语言中, 如下两种定义字符串的方式有什么不同?

char*str="abcd";
charstr[5]="abcd";
比如在分配内存的时候,还有在其他方面有什么区别
弑天下
浏览 456回答 2
2回答

MMTTMM

constchar*str1="abcd";这个语句在内存中分配了一块静态内存存储字符数组,然后把该字符数组的首地址赋予指针str1,这里的str1是一个指针,用sizeof操作符对其操作时,返回的是该指针的大小。charstr2[5]="abcd";这个语句在栈内存中分配了一块内存存储字符数组,然后把该字符数组的首地址赋予str2,标识该数组,用sizeof操作符对其操作时,返回的则是数组名str2所标识数组的元素个数。Update:更正sizeof(type)sizeofexpression两个版本都返回一个size_t类型的常量。1)返回type类型对应对象的大小(以字节为单位)。2)返回expression的返回类型对应对象的大小(以字节为单位)。所以原来的回答有错误,现更正为:sizeofstr1返回的是指针str1的字节大小,sizeofstr2返回的是str2所标识数组的所有元素的字节大小。

红颜莎娜

前者的数据只可读不可写,后者的可读可写.原因是数据存储的位置不同,可读写属性不同.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript