shi*_*zou 0 c syntax error-handling
直接发送字符串比将字符串指针发送到函数有什么区别?
例如:
void foo(char * a){//suppose foo reads and/or writes to the passed string
...
}
int main(){
foo("asdf");//what is the difference between this
char a[]="asdf";
foo(a);//and this?
}
Run Code Online (Sandbox Code Playgroud)
第一个我得到各种访问违规错误,而第二个我没有,所以这两者有什么区别?
在第一种情况下,您将字符串文字传递给函数.字符串文字是不可变的,这意味着您无法更改它的任何部分.这是一个static存储在只读存储器段中的数组.尝试更改此字符串会导致未定义的行为.
在第二种情况下,您构造一个数组,初始化它"asdf"并将其传递给函数.在这种情况下,可以修改数组中的字符.
有关详细信息,请参阅comp.lang.FAQ的问题1.32.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |