二维数组的地址问题

void main()
{
char str[5][10] = { "calc","tasklist","mspaint","pause","notepad" };
printf("%p,%p,%p\n", str, &str, *str);
printf("%d,%d,%d\n", sizeof(*str), sizeof(*(&str)), sizeof(*(*str)));
system("pause");

}

二维数组你取str, &str, *str的地址,竟然神奇的发现他们都是一样的,这让很多人很迷惑,我也是迷途中的一员,直到我算了他们的大小sizeof(*str), sizeof(*(&str)), sizeof(*(*str))发现他们的大小是不一样的。其中str表示一行的首地址,所以其大小是10,&str表示整个数组的首地址,所以其大小是50.*str的指单个元素的首地址,其大小是1。由以上可以知道指针的地址一样但是类型不一样   表示的意义也不一样。


千万注意指针的两大要素  一是地址,二是指针类型,类型决定步长。类型不一样,步长不一样。

猜你喜欢

转载自blog.csdn.net/qianyayun19921028/article/details/80676416