- 论坛徽章:
- 0
|
本帖最后由 keytounix 于 2011-11-18 11:29 编辑
回复 13# albert_wzh - #include <unstd,h>
- int main(int n,char *v[])
- {
- int i=0;
- while(i<n)
- {
- printf("arg[%d]=%s\n",i,v[i]);
- }
- return 0;
- }
复制代码 假设这个代码编译后得到test文件
#./test arg1 arg2
运行后的结果是
arg[0]=./test
arg[1]=arg1
arg[2]=arg2
也就是说
v存放的是指向字符串i的指针
现在知道 v[1],v[2]了吧?
他实际就是初始化的那些字符串的首地址的值
那么s[0]="test"字符串的地址咯
s[1] = "again"字符串的地址咯
*s就是s[0]
s++后
*s就是s[1]
s++怎么理解呢?
因为s是char *类型
假设s的值为2010
可以用printf("s=%p",s)看到的哦
从s地址开始的4字节空间存放的数据就是"test"字符串的地址
sizeof(char *)=4
s++就是
s+1*sizeof(typeof(s))=2014
那么从2014开始这4个字节的空间存放的数据就是 "again"字符串的地址
但是s++是不能通过编译的
个人意见,如果有错欢迎大家指正 |
|