社区
C语言
帖子详情
*argv[]与**argv
qingu
2010-07-23 01:54:46
int main(int argc, char * argv[])和int main(int argc, char ** argv)
*argv[]与**argv相等、怎么解释。
谢谢哈
...全文
606
20
打赏
收藏
*argv[]与**argv
int main(int argc, char * argv[])和int main(int argc, char ** argv) *argv[]与**argv相等、怎么解释。 谢谢哈
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hyuanqing
2010-07-24
打赏
举报
回复
数组和指针,建议看一下《让你不再害怕指针》,你会完全明了
argv[] *argv 其实是一个妈妈生的
白云飘飘飘
2010-07-23
打赏
举报
回复
char * argv[], char ** argv
虽然二者本质上是一样的,但第一个表达的意义更清晰。
充电宝111
2010-07-23
打赏
举报
回复
1
C标准规定,作为函数的形参,[]退化为*
elated
2010-07-23
打赏
举报
回复
数组和指针在作函数参数时是一样的
qingu
2010-07-23
打赏
举报
回复
感谢各位的回答。
queatin_man
2010-07-23
打赏
举报
回复
1
*argv[]中,是个指针数组,还是数组指针了, 弄混了
**argv中,argv指向存放元素是char*数组的首地址
但是两个是一个意思,在内存中,都是同一个结构的内存
baihacker
2010-07-23
打赏
举报
回复
[Quote=引用 13 楼 zhangweiit 的回复:]
char *与char []
并不是完全对等的
char *s1 = "sss";
char s2[20] = "bbb";
这s2可以被修改,而s1就不行
因为s1指向的是一个字符常量的空间
而s2是在栈上开辟出来的20个字节的空间
s1的本质取决于他指向的内容
同样,char **与 char*[]与char [][]也有区别
char*可以用于表示char []……
[/Quote]
这里是在形参里。
zhangweiit
2010-07-23
打赏
举报
回复
char *与char []
并不是完全对等的
char *s1 = "sss";
char s2[20] = "bbb";
这s2可以被修改,而s1就不行
因为s1指向的是一个字符常量的空间
而s2是在栈上开辟出来的20个字节的空间
s1的本质取决于他指向的内容
同样,char **与 char*[]与char [][]也有区别
char*可以用于表示char [][]
char**可以用于表示char *[]
不过char[][]就不可以直接表示char**,反之亦然
归根结底就是,*的,只是做指向,
赵4老师
2010-07-23
打赏
举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
眼睛猥琐男
2010-07-23
打赏
举报
回复
[Quote=引用 5 楼 wyz007134 的回复:]
*argv[]与**argv
这俩东西类型是一样的,虽然看起来一个是
char*构成的数组,即字符指针数组;一个是char**,即指向字符指针的指针。
但是在C中,数组即由指针定义,因此,两者指的是同一个东西
[/Quote]
vanchristin
2010-07-23
打赏
举报
回复
形参声明为char *argv[] 和char **argv,实参传进去的都是char **
只不过char *argv[]看起来更直观
you12321
2010-07-23
打赏
举报
回复
之前还真不知道这个,谢谢楼主了
tzcherish
2010-07-23
打赏
举报
回复
[Quote=引用 6 楼 bing_bing 的回复:]
int main(int argc, char * argv[])更直观。前一个参数是个数,后一个弄个指针数组。数组大小和前一个的关系可以看出。
[/Quote]
+1
aozhi
2010-07-23
打赏
举报
回复
[Quote=引用 4 楼 lovesi3344 的回复:]
就好像
int *p = "abcd";
int a[] = "abcd";
这两种
[/Quote]
别误导别人,传参没区别,但初始化不一样。
bing_bing
2010-07-23
打赏
举报
回复
int main(int argc, char * argv[])更直观。前一个参数是个数,后一个弄个指针数组。数组大小和前一个的关系可以看出。
wyz007134
2010-07-23
打赏
举报
回复
*argv[]与**argv
这俩东西类型是一样的,虽然看起来一个是
char*构成的数组,即字符指针数组;一个是char**,即指向字符指针的指针。
但是在C中,数组即由指针定义,因此,两者指的是同一个东西
lovesi3344
2010-07-23
打赏
举报
回复
就好像
int *p = "abcd";
int a[] = "abcd";
这两种
zhangweiit
2010-07-23
打赏
举报
回复
char *argv 与 char argv[]相等
char **argv 与char *argv[]相等
这两者道理是一样的
本质上来说是:数组,可以用指向它首地址的指针来表示
gamemagic
2010-07-23
打赏
举报
回复
嗯是这么理解。前提是必须是形式参数
baihacker
2010-07-23
打赏
举报
回复
在C中,没有直接的数组参数。
vod foo(int arr[5]);
vod foo(int arr[4]);
上面的都一样,意思是传一个int*。
于是里面的数字没啥意思的,所以也允许[]。
总之,就是int*
《c语言深度解析》第5、6章 制作c库与c标准库、数组与字符串
课程内容: 第5章: 库的原理、静态库与动态库、制作静态库和动态库、c库函数与OS ... 第6章: 一维数组、二维数组、三维数组、使用malloc开辟多维数组、字符串、指针变量/数组/字符串与sizeof、main函数的argc、
argv
。
char **
argv
与char *
argv
[]
1、char **
argv
分析:
argv
是一个指针变量,
argv
的指向(*
argv
)是char *,也就是
argv
指向的也是一个指针 ; *
argv
的指向(**
argv
)是char。 2、char *
argv
[] 分析:首先
argv
是一个数组,数组里面的元素是指针变量(char *),数组里元素指向的是char。 转载于:https://www.cnblogs.com/QQ2962...
[C/C++] 对于C语言中的 *
argv
[] 与 **
argv
区别的个人理解
1.*
argv
[]声明的是一个指针数组,数组元素是指针变量,指针变量存储的是字符串的地址,即指针数组存储了字符串的地址,
argv
[i]即为指针数组中第i个字符串的地址;**
argv
声明的是一个指向指针数组的指针,
argv
存储的是指针数组的地址,
argv
[i]也是指针数组中第i个字符串的地址。因此*
argv
[]与 **
argv
两者都可以访问字符串,并且功能是相同的。 2...
char **
argv
char*
argv
[]
char **
argv
和char *
argv
[]可以认为基本一样(当然这两者是有些区别的,但大部分情况下可认为是一样的).我对
argv
的理解是:
argv
是一个指向字符串指针的指针。所以,假设:char *p = "aaaa";(const char *p)char **
argv
= p;则:
argv
= &p(
argv
存储的值就是p的地址)*
argv
= p(
argv
...
C语言系列之main函数参数char**
argv
与char*
argv
[]
它们之间,没有区别。讨论c语言中,char**
argv
与char*
argv
[]。char **
argv
,它是一个二级指针类型。编译一下下面的程序,
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章