w****o 发帖数: 2210 | 1 我有一个简单的程序:
#include
#include
int main(){
unsigned int i, *j, *k;
*j =0;
*k=0;
i = 1 << 31;
printf("i: %d\n", i);
printf("j: %d\n", *j);
printf("k: %d\n", *k);
}
可是编译运行以后报错:
Segmentation fault (core dumped)
如果我把 *k=0 去掉,结果是:
i: -2147483648
j: 0
k: -1073377976
这是为什么呢? |
T*****9 发帖数: 2484 | 2 j和k没分配
【在 w****o 的大作中提到】 : 我有一个简单的程序: : #include : #include : int main(){ : unsigned int i, *j, *k; : *j =0; : *k=0; : i = 1 << 31; : printf("i: %d\n", i); : printf("j: %d\n", *j);
|
K****n 发帖数: 5970 | |
T*****9 发帖数: 2484 | 4 我经常这么干
【在 K****n 的大作中提到】 : 指针使用得挺勇猛啊
|
K****n 发帖数: 5970 | 5 如果*k不赋值就没事儿,说明k原本指的那块儿地儿挺重要,不能瞎改的
C我不太熟,有<>?没用到吧?
【在 w****o 的大作中提到】 : 我有一个简单的程序: : #include : #include : int main(){ : unsigned int i, *j, *k; : *j =0; : *k=0; : i = 1 << 31; : printf("i: %d\n", i); : printf("j: %d\n", *j);
|
K****n 发帖数: 5970 | 6 握个手。。。
【在 T*****9 的大作中提到】 : 我经常这么干
|
K****n 发帖数: 5970 | 7 刚看一眼,unsigned 是u吧。。。
我真的不懂c,同学好好google google,其实没什么难的
【在 w****o 的大作中提到】 : 我有一个简单的程序: : #include : #include : int main(){ : unsigned int i, *j, *k; : *j =0; : *k=0; : i = 1 << 31; : printf("i: %d\n", i); : printf("j: %d\n", *j);
|
T*****9 发帖数: 2484 | 8 en, %u
不过我经常%d...
【在 K****n 的大作中提到】 : 刚看一眼,unsigned 是u吧。。。 : 我真的不懂c,同学好好google google,其实没什么难的
|
K****n 发帖数: 5970 | 9 人家打出来都负了。。。
你这样的牛人都犯这个错,那我就去找testing工作好了,肯定有市场
【在 T*****9 的大作中提到】 : en, %u : 不过我经常%d...
|
T*****9 发帖数: 2484 | 10 我不牛啊
我写的程序就是正二八经的反例。。。全是bug
【在 K****n 的大作中提到】 : 人家打出来都负了。。。 : 你这样的牛人都犯这个错,那我就去找testing工作好了,肯定有市场
|
|
|
y*******g 发帖数: 6599 | 11 有没有职位是专门写sample code来训练tester的?
【在 T*****9 的大作中提到】 : 我不牛啊 : 我写的程序就是正二八经的反例。。。全是bug
|
z*****n 发帖数: 7639 | 12 wrong use of pointer *j and *k
【在 w****o 的大作中提到】 : 我有一个简单的程序: : #include : #include : int main(){ : unsigned int i, *j, *k; : *j =0; : *k=0; : i = 1 << 31; : printf("i: %d\n", i); : printf("j: %d\n", *j);
|
T*****9 发帖数: 2484 | 13 有的话通知我一下,我干净去投,顺便带代码
【在 y*******g 的大作中提到】 : 有没有职位是专门写sample code来训练tester的?
|
p********y 发帖数: 14 | 14 You are not using the pointer correctly.
You have only intitialized the pointer variables j,k, but haven't
initialized what they are pointing to. That is why you got garbage values
for those pointer variables.
You should do as below,
unsigned int *j, *k, _j, _k;
j=&_j;
k=&_k;
*j=0;
*k=0;
with those, you should be all right.
【在 w****o 的大作中提到】 : 我有一个简单的程序: : #include : #include : int main(){ : unsigned int i, *j, *k; : *j =0; : *k=0; : i = 1 << 31; : printf("i: %d\n", i); : printf("j: %d\n", *j);
|
z***e 发帖数: 5393 | 15 sdet for visual c++/vb/C#/etc/powershell/javascript/ironpython/etc.
【在 T*****9 的大作中提到】 : 有的话通知我一下,我干净去投,顺便带代码
|
T*****9 发帖数: 2484 | 16 你们公司有position么。。。
【在 z***e 的大作中提到】 : sdet for visual c++/vb/C#/etc/powershell/javascript/ironpython/etc.
|
l********s 发帖数: 358 | 17 I'd like to use new() in C++ style.
unsigned *j;
j = new unsigned(0);
【在 p********y 的大作中提到】 : You are not using the pointer correctly. : You have only intitialized the pointer variables j,k, but haven't : initialized what they are pointing to. That is why you got garbage values : for those pointer variables. : You should do as below, : unsigned int *j, *k, _j, _k; : j=&_j; : k=&_k; : *j=0; : *k=0;
|