由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 为什么我这段简单的程序segment fault
相关主题
懒得写了,想练手的就写写贴在这里吧大家帮我看看这段code 哪儿错了
C的argc问题FB 电面面经
c++ 程序一问你们看过programming pearls (2nd edition English) or 正在看的同学们
一道C语言题one c++ question
C++ online Test 又一题bloomberg assessment的机经,c语言的(20道题)
C++ 一题这题哪错了?
一题这个看着很白痴的问题有更好的解法吗?
问一道题帮看看这段code
相关话题的讨论汇总
话题: char话题: cb话题: ca话题: swap话题: int
进入JobHunting版参与讨论
1 (共1页)
d**f
发帖数: 264
1
void swap( char* cA, char* cB)
{
char ct = *cA;
*cA = *cB;
*cB = ct;
}
int main(int argc, char* argv[])
{
char *a = "a";
char *b = "b";
swap(a, b);
}
貌似问题出在 *cA = *cB;?
如果是char a = 'a'; char b = 'b'; swap(&a,&b);不会有segment fault.
d**e
发帖数: 6098
2
前面ihasleetcode有个贴应该也解释过类似的。
char * a = "a"
定义的是一个c-string constant,不能修改它的值。所以在swap就出现segment fault
了。

【在 d**f 的大作中提到】
: void swap( char* cA, char* cB)
: {
: char ct = *cA;
: *cA = *cB;
: *cB = ct;
: }
: int main(int argc, char* argv[])
: {
: char *a = "a";
: char *b = "b";

r****o
发帖数: 1950
3

a and b are stored as literal string so you cannot change them.
...................

【在 d**f 的大作中提到】
: void swap( char* cA, char* cB)
: {
: char ct = *cA;
: *cA = *cB;
: *cB = ct;
: }
: int main(int argc, char* argv[])
: {
: char *a = "a";
: char *b = "b";

d**f
发帖数: 264
4
是这个问题,比如
char *a = "hi"; a[0] = 'y'; 会报错
如果定义成 char[] = "hi"; 就没有问题.
d**f
发帖数: 264
5
K&R C 原话是这么说的,P104
pmessage is a pointer, initialized to point to a string constant; the
pointer may subsequently be modified to point elsewhere, but the result is
undefined if you try to modify the string contents.
P***P
发帖数: 1387
6
主要还不是string的问题
你这个程序基本没有对的地方,
就算都把char改成int还是错
人家gcc编译的时候都把warning给你了还不知道要改
d**f
发帖数: 264
7
程序是没有问题的,问题出在C++
const char* c = "hi";
前面那个const是implicit.
char c[] = "hi";
也不好,这个要depends on compiler.
所以最好的办法是,C++下直接用string
尽量少用cstring.
d**f
发帖数: 264
8
从这里出发,我又想到好多东西.
第一个就是 char ** p 和 char * a[]. p, p+1, *p, *(p+1)与a, a[0], a[1]在函数
传递的时候到底有什么不同.
第二个就是 int ** p 和 int a[][], 2D Array where column and row are both
unknown,到底应该怎样传递.
第三个是怎样去实现一个高效简单的2D Dynamic Array?
第二个问题的来源是,面试的时候,我被问到一个常见的题目:
find a int in a 2D array. column and row are sorted.
int a[M][N] = {}; //M and N could be any numbers.
How to pass 'a' into your function?
1 (共1页)
进入JobHunting版参与讨论
相关主题
帮看看这段codeC++ online Test 又一题
问一道kth smallest element的题目C++ 一题
leetcode上一题,求正解一题
写了一个find kth number in 2 sorted arrays的code 请大牛看问一道题
懒得写了,想练手的就写写贴在这里吧大家帮我看看这段code 哪儿错了
C的argc问题FB 电面面经
c++ 程序一问你们看过programming pearls (2nd edition English) or 正在看的同学们
一道C语言题one c++ question
相关话题的讨论汇总
话题: char话题: cb话题: ca话题: swap话题: int