菜鸟求帮忙解答指针问题

Tony_Xian 2016-09-15 12:33:06
#include<iostream>
using namespace std;
int main()
{void sort(char (*p)[6]);
int i;
char str[10][6];
char (*p)[6];
cout<<"input 10 strings:"<<endl;
for(i=0;i<10;i++)
cin>>str[i];
p=str;
sort(str);
cout<<"Now the sequence is:"<<endl;
for(i=0;i<10;i++)
cout<<str[i]<<endl;
return 0;
}

void sort(char (*s)[6])
{int i,j;
char temp[6],*t=temp;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(strcmp(s[j],s[j+1])>0)
{strcpy(t,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],t);
}
}

这里 (*s)[6]的s是指向包含6个元素的一维数组的指针变量吧,那下面的s[j]是什么来的,明明是指针向量,怎么变成数组了,求各位兄弟帮忙解答,谢谢各位,另外想问问怎样学好指针,感觉好多概念,好混乱啊
...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fefe82 2016-09-15
  • 打赏
  • 举报
回复
引用 6 楼 boiled_water123 的回复:
我是楼主,我想问问s不是指针变量吗,为什么程序里直接引出s[j],这个s指针变量和s[j]是什么关系,为什么s[j]刚好是6个元素,和s指针指向的数组一样是6个元素
s[j] j[s] *(s+j) 这三者是等价的。
paschen 版主 2016-09-15
  • 打赏
  • 举报
回复
引用 6 楼 boiled_water123的回复:
我是楼主,我想问问s不是指针变量吗,为什么程序里直接引出s[j],这个s指针变量和s[j]是什么关系,为什么s[j]刚好是6个元素,和s指针指向的数组一样是6个元素
s 是指向数组的指针 s[j] 等价于 *(s + j) 因为s指向的类型是一个数组,所以s+j移动的是j个数组的大小
Tony_Xian 2016-09-15
  • 打赏
  • 举报
回复
我是楼主,我想问问s不是指针变量吗,为什么程序里直接引出s[j],这个s指针变量和s[j]是什么关系,为什么s[j]刚好是6个元素,和s指针指向的数组一样是6个元素
paschen 版主 2016-09-15
  • 打赏
  • 举报
回复
你传入的参数str是一个二维数组,而二维数组可以理解成一个一维数组,数组中每个元素还是一维数组 这样s[j] 相当于是 str[j] 这个一维数组(6个元素)
小灸舞 2016-09-15
  • 打赏
  • 举报
回复
因为你指针指向了字符数组呗。
指针一开始学是这样的,慢慢的就自然理解清楚了
赵4老师 2016-09-15
  • 打赏
  • 举报
回复
A[B]
*(A+B)
*(B+A)
B[A]
//以上四行等价

"abc"[1]
*("abc"+1)
*(1+"abc")
1["abc"]
//以上四行等价

A[0]
*(A)
0[A]
//以上三行等价
ooolinux 2016-09-15
  • 打赏
  • 举报
回复
sort(str); 函数调用,形参s=实参str s[j]==str[j] 参考: 《深入理解C指针》
zycxnanwang 2016-09-15
  • 打赏
  • 举报
回复
char *p="cdfnnnn"; 可以这样直接表示!

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧