这是什么用法

时间:2021-03-01 02:41:38
main(int c,char **v) 



 c[v]="hello,world"; 

 v[c]="hello,world"; 

 printf("%s",v[c]); 
 
 printf("%s",c[v]);



1.char **v 中v是什么意思?
2.怎么可以这样用c[v]?c不是一个整型吗?
3.c[v]和v[c]有什么区别,它们指向同一块内存吗?它们之间能否相互赋值

12 个解决方案

#1


这是不知所谓的用法,一塌糊涂。
这样回答有没有分?

#2


1.指针的指针
2.!!!
3.!!!!

#3


简单的问题,c[v]和v[c]在编译器看来只不过是地址加偏移,就是
c[v] ====> c+v
v[c] ====> v+c
呵呵,两者一样都指向同一地址。

#4


同意liuto(B34)的意见,就是这样,但是如果你运行这个程序很可能现运行时错误,因为访问了非法的内存地址c+v,也许在纯dos下面不会错,因为dos对内存没有保护。
这个例子正说明了C语言令人感到恶心的地方,指针没有任何限制,这是他最大的缺点!

#5


不会,只要大小不超过命令行的最大字节数就不会有问题,因为c+v是指向命令行参数块的:-)

#6


另外,这也是C显示其灵活和强大的地方,呵呵呵呵:-) :-)

#7


我没有注意到c和v是main的参数;
不过我还是觉得这种用法很恶心

#8


呵呵呵呵,这里这个用法是极端做法,有毛病的人才这么干,:-)是TMD恶心,哈哈哈哈

#9


说个笑话,我的一个朋友曾经这么幽默了一把:
"Hello,world"[1] = 'A';
也挺有意思的吧,呵呵呵呵。

#10


搞笑呀,这样也可以?!
刚刚试了一下,居然真的可以,真不知道C的编译器是怎么做的,对这种情况都没有检查呀,太恶心了:)

#11


刚看到。我觉得可以接受呀。starfish太纯洁了吧呵呵。但我绝对同意“清楚的code”!

#12


晕~~~~

#1


这是不知所谓的用法,一塌糊涂。
这样回答有没有分?

#2


1.指针的指针
2.!!!
3.!!!!

#3


简单的问题,c[v]和v[c]在编译器看来只不过是地址加偏移,就是
c[v] ====> c+v
v[c] ====> v+c
呵呵,两者一样都指向同一地址。

#4


同意liuto(B34)的意见,就是这样,但是如果你运行这个程序很可能现运行时错误,因为访问了非法的内存地址c+v,也许在纯dos下面不会错,因为dos对内存没有保护。
这个例子正说明了C语言令人感到恶心的地方,指针没有任何限制,这是他最大的缺点!

#5


不会,只要大小不超过命令行的最大字节数就不会有问题,因为c+v是指向命令行参数块的:-)

#6


另外,这也是C显示其灵活和强大的地方,呵呵呵呵:-) :-)

#7


我没有注意到c和v是main的参数;
不过我还是觉得这种用法很恶心

#8


呵呵呵呵,这里这个用法是极端做法,有毛病的人才这么干,:-)是TMD恶心,哈哈哈哈

#9


说个笑话,我的一个朋友曾经这么幽默了一把:
"Hello,world"[1] = 'A';
也挺有意思的吧,呵呵呵呵。

#10


搞笑呀,这样也可以?!
刚刚试了一下,居然真的可以,真不知道C的编译器是怎么做的,对这种情况都没有检查呀,太恶心了:)

#11


刚看到。我觉得可以接受呀。starfish太纯洁了吧呵呵。但我绝对同意“清楚的code”!

#12


晕~~~~