文件名: test.c 代码
#include<stdio.h> main(int argc, char const *argv[]) { char *s1, *s2; s1 = argv[0]; s2=&argv[0]; printf("s1:%s\n", s1); printf("s2:%s\n", s2); return 0; } 输出结果
s1:/home/cqh/code/ccode/ch2/test s2: 为什么 s2 是乱码呢?按理将不是应该一样的吗?

文件名: test.c 代码
#include<stdio.h> main(int argc, char const *argv[]) { char *s1, *s2; s1 = argv[0]; s2=&argv[0]; printf("s1:%s\n", s1); printf("s2:%s\n", s2); return 0; } 输出结果
s1:/home/cqh/code/ccode/ch2/test s2: 为什么 s2 是乱码呢?按理将不是应该一样的吗?
1 heiher Nov 30, 2018 via Android %p 打印看看就知道啦 |
2 zynlp Nov 30, 2018 via iPhone 你还是从头开始学吧 |
3 1a0ma0 Nov 30, 2018 via iPhone 能一样嘛?一个是一个 pointer 一个是 pointer 的地址..... |
4 leido Nov 30, 2018 via Android s2 是指针数组的地址 |
5 Halry Nov 30, 2018 via Android s2 是取了地址啊,肯定显示不出 |
6 kljsandjb Nov 30, 2018 via iPhone char **s2; |
7 leeZoom Dec 1, 2018 via Android 了解一下指针…… |
8 dongfang Dec 1, 2018 s1 和 s2 类型都不一样。 s1 是 char 指针,s2 是指向 char 指针的指针。 不要以为你一开始都定义为 char*,所以赋值之后 s1 和 s2 就一样了。 赋值有强制类型转换,s2 不是 char*类型,是 char**类型。 |
9 dongfang Dec 1, 2018 指针重新看一遍吧 |
10 liangzi Dec 1, 2018 &取地址符号 取得了数组的地址?猜测 |