czj1016130386 发表于 2018-9-16 23:12:29

关于指针的小疑惑

#include<stdio.h> //排序字符串大小
#include<string.h>


void contrast(char *name[],int n);
void print(char *name[], int n);
int main()
{
    char *ID[] = {"Fishc.com","www.fishc,com","home.fishc.com","Thank,you!"};
    int n = 4;
    contrast(ID,n);
    print(ID,n);
    return 0;
}


void contrast(char *name[],int n)
{
    char *temp;
    int i,j,k;
    for(i=0;i<n-1;i++)
    {
      k = i;
      for(j=0;j<n-1-i;j++)
      {
            if(strcmp(name,name)>0)
            {
                k = j;
            }else
            {
            temp = name;
            name = name;
            name = temp;
            }
      
      }
    }

}


void print(char *name[], int n)
{
    int i;
    for(i=0; i<n; i++)
    {
    printf("%s\n",name);
    }
}


想问一下,为什么最后printf用*name不行,指针取值不是加*吗,不加反而可以,困惑!!求解答一下,谢谢

claws0n 发表于 2018-9-16 23:42:36

下标等同解开引用,你两个都用,就是对数组的指针解开引用,只会是第一个字符。

czj1016130386 发表于 2018-9-16 23:51:28

claws0n 发表于 2018-9-16 23:42
下标等同解开引用,你两个都用,就是对数组的指针解开引用,只会是第一个字符。

但运行的结果是什么都没有,我想了一下,会不会是常量区的不能写的原因

claws0n 发表于 2018-9-17 00:10:23

czj1016130386 发表于 2018-9-16 23:51
但运行的结果是什么都没有,我想了一下,会不会是常量区的不能写的原因

哦,%s 的关系,解引用之后是字符,而不是字符串,要 %c
页: [1]
查看完整版本: 关于指针的小疑惑