C语言指针数组

char in[10000]={0};
char *a[10000]={NULL};
int i=0;
printf("Please input a string:\n");
//输入字符串
gets(in);
//处理
split(in, a);
//输出单词
printf("Words:\n");
for(;a[i];i++) printf("%s\n", a[i]);
printf("%d",i);
system("pause");
return 0;
}
void split(char *str, char **a)
{
char *p=str;
//处理第一个单词
if(*p && *p!=' ') {*a++=str;p++;}

while(*p)
{
//处理单词
if(*p!=' ' && *(p-1)=='\0') *a++=p;
//处理空格
else if(*p==' ') *p='\0';
p++;
}
}
里面的*a++=p是什么意思,实现了什么,求指教

哥们!建议你写完一个程序之后如果编译器报错!先认真的看一遍!
一些很明显的错误可以很容易的发现的!例如你的i应该是<2;
而不是24!
j应该是<3而不是小于5;
不然你的指针都指到数组外面去了!
还有你声明的p的类型是int*;
a的类型是int**;
他们是不能直接赋值的!
可以改为 p=a[0]; 或者你直接定义int **p;
吧p定义成二级指针也可以!
帮你把代码修改如下!

#include<iostream>
using namespace std;
void main()
{
int *p;
int a[2][3];
int q=0;
p=a[0];
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
{
q+=1;
*(p+3*i+j)=q;
}
for(int k=0;k<6;k++)
cout<<*(p+k)<<endl;
}
输出 数组的值为:
1
2
3
4
5
6
是否可以解决您的问题?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-24
a++是a这个数自加以的意思,例如a原先是1的话,a++=p之后就是p=2的意思。

++在C语言里面表示自加一。而你这个是指针应该就是向后移动一位的意思。

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网