关于指针和数组的问题

最近在学数组和指针,老师让我们输入一串字符串并使其反向储存,我编写了如下代码但是报错了,请问我应该怎么做,我错在哪?

 #include<stdio.h>
void zhuan(char *a,int b)
{
    char m[b];
    int n=0;
    while(b>=0)
        {
        m[n]=*a[b];
        n++;
        b--;
        }
    b=0;
    while(*a[b]!='\0')
        {
            *a[b]=m[b];
            b++;
        }
}

void main()
{
    int i=0,b,k;
    char s[100],*str1[100];
    scanf("%s",&s);

    while(s[i]!='\0')
        {
            str1[i]=&s[i];
            i++;
        }
    zhuan(str1,i);
    for(k=0;k!=0;k++)
       printf("%c",*str1[k]);
}

4个回答

你不会使用指针吧。。
代码里面这些用法都是问题的 *a[b]

这么一个数组, char *a,
要取第b个元素,要么就是 a[b], 要么就是 *(a+b)

没有这种用法 *a[b] 的,除非你是指针数组,但事实上不是,就算是也不建议这样下标和指针混用。

lyy289065406
小優YoU 回复zhu2252823946: 错啊,我前面不是说了,要么就是 a[b], 要么就是 *(a+b)
大约 2 年之前 回复
zhu2252823946
zhu2252823946 我这里*a[b]是指数组s[i]的值,这种表达有错的?
大约 2 年之前 回复

a[b];

这一句有问题,数组这么写已经是具体的数值了
再加上
就不知道是什么东西了

qq_34698849
qq_34698849 回复zhu2252823946: 如果需要 应该有更简单的写法
大约 2 年之前 回复
qq_34698849
qq_34698849 回复zhu2252823946: 我测试的源码你看看
大约 2 年之前 回复
zhu2252823946
zhu2252823946 能解释得详细一些吗
大约 2 年之前 回复
zhu2252823946
zhu2252823946 但是在我定义函数的时候说明a是指针了吧?我加个*是为了读取内存中的对应数据啊,不是这个意思吗?
大约 2 年之前 回复

#include
void zhuan(char *a,int b)
{
char m[b];
int n=0;
while(b>=0)
{
m[n]=a[b];
n++;
b--;
}
b=0;
while(a[b]!='\0')
{
a[b]=m[b];
b++;
}
}

void main()
{
int i=0,b,k;
char s[100],str1[100];
scanf("%s",&s);

while(s[i]!='\0')
    {
        str1[i]=s[i];
        i++;
    }
    i--;
zhuan(str1,i);
for(k=0;str1[k]!='\0';k++)
   printf("%c",str1[k]);

}

#include
void zhuan(char *a,int b)
{
char m[b];
int n=0;
while(b>=0)
{
m[n]=a[b];
n++;
b--;
}
b=0;
while(a[b]!='\0')
{
a[b]=m[b];
b++;
}
}

void main()
{
int i=0,b,k;
char s[100],str1[100];
scanf("%s",&s);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问