V*******g 发帖数: 678 | 1 (1)
char *input = "abc def";
reversestring(input);
(2)
char input[] = "abc def";
reversestring(input);
(1)和(2) 有什么区别? (1)编译报错,为什么? |
c*****b 发帖数: 1 | 2 whats the signature of function 'reversestring'? |
l******4 发帖数: 729 | |
s****1 发帖数: 135 | 4 报的什么错,also, what's the signature |
s*********t 发帖数: 1663 | 5 跟reversestring的实现有关吧
但是编译错我觉得没道理。。
*input和input[]的区别是sizeof(后者)是8,(包含\0),前者是4,(指针大小)
但是函数调用传值的时候应该都是char*副本,不应该有区别。
但如果试图修改指针指的内容的话,第一个运行会出错,第一个指向的是个const
【在 V*******g 的大作中提到】 : (1) : char *input = "abc def"; : reversestring(input); : (2) : char input[] = "abc def"; : reversestring(input); : (1)和(2) 有什么区别? (1)编译报错,为什么?
|
c**y 发帖数: 172 | 6 Sorry, I tested it by calling "sizeof(input)" for *input and input[]. 4 is
returned in both cases.
【在 s*********t 的大作中提到】 : 跟reversestring的实现有关吧 : 但是编译错我觉得没道理。。 : *input和input[]的区别是sizeof(后者)是8,(包含\0),前者是4,(指针大小) : 但是函数调用传值的时候应该都是char*副本,不应该有区别。 : 但如果试图修改指针指的内容的话,第一个运行会出错,第一个指向的是个const
|
V*******g 发帖数: 678 | 7 你的解释应该有道理,reverse string的话,指向的是const。报的错是stack error.
估计是不能修改原值。
这样的话是不是说 reverse string只能input[]这种方式赋初值。
【在 s*********t 的大作中提到】 : 跟reversestring的实现有关吧 : 但是编译错我觉得没道理。。 : *input和input[]的区别是sizeof(后者)是8,(包含\0),前者是4,(指针大小) : 但是函数调用传值的时候应该都是char*副本,不应该有区别。 : 但如果试图修改指针指的内容的话,第一个运行会出错,第一个指向的是个const
|
m*m 发帖数: 47 | 8
第一个input指向得是read-only memory, 第二个input指向得是read-write memory.
that's it.
【在 V*******g 的大作中提到】 : (1) : char *input = "abc def"; : reversestring(input); : (2) : char input[] = "abc def"; : reversestring(input); : (1)和(2) 有什么区别? (1)编译报错,为什么?
|
A***J 发帖数: 478 | 9 第一个我的理解是,你赋值了,但没有给地址, 第二个给了地址 |
l*******g 发帖数: 4894 | 10 我觉得这个解释说得过去。
【在 m*m 的大作中提到】 : : 第一个input指向得是read-only memory, 第二个input指向得是read-write memory. : that's it.
|