苏维埃码农 发表于 2019-12-21 17:24:11

指针数组的问题

#include <stdio.h>

int main()
{
   
    char *ch;   
    scanf("%s",ch);
    printf("%s",ch);   //有输出

    return 0;
}

换成下面程序
int main()
{
   
    char *a;   
    scanf("%s",a);
    printf("%s",a);   //没有有输出

    return 0;
}
为什么第二个程序没有输出?

人造人 发表于 2019-12-21 17:40:23

上面两个程序全是错的

TOP_LK 发表于 2019-12-21 17:42:45

数组指针

人造人 发表于 2019-12-21 17:42:52

printf("%s",a);   //没有有输出

另外,什么叫做 “没有有输出”

苏维埃码农 发表于 2019-12-21 19:49:50

人造人 发表于 2019-12-21 17:42
另外,什么叫做 “没有有输出”

没有输出,多打了一个有,就是你在屏幕上看不见输出

苏维埃码农 发表于 2019-12-21 19:50:44

人造人 发表于 2019-12-21 17:40
上面两个程序全是错的

没有错,可以执行

Croper 发表于 2019-12-21 20:07:05

苏维埃码农 发表于 2019-12-21 19:50
没有错,可以执行

可以执行不代表没有错,
你两个程序的指针都是空悬指针,指向内存的随机位置。
出什么错也不奇怪。

苏维埃码农 发表于 2019-12-21 20:18:25

Croper 发表于 2019-12-21 20:07
可以执行不代表没有错,
你两个程序的指针都是空悬指针,指向内存的随机位置。
出什么错也不奇怪。

多谢,明白了

大尾巴 发表于 2019-12-21 23:22:25

#include<stdio.h>
#include <stdlib.h>
int main()
{   char *a; //定义一个指针数组,这个数组里面有10个元素,每个元素都是一个地址
      char b;//定义一个数组
      scanf("%s",b);   
      *a=b;//给指针数组赋值
      printf("%s\n",*a); //输出,
          printf("%c",*(*a+2));//输出字符串中的指定字符
      system("pause");
      return 0;
}   


/*    char (*a); //定义一个数组指针,这个数组指针是一个指向有10个元素的数组的指针
      char b;
          scanf("%s",&a);
          a=&b;      //这个地方不能是 *a=b,不然报错说 表达式必须是可修改的左值,高手请指教下
          printf("%s\n",*a);
          printf("%c",*(*a+3));//输出字符串中的指定位置的字符
          system("pause");
          return 0;
          */
上面的指针数组和数组指针都可以满足楼主的需求
有三个疑问 1为什么 指针数组中只能是*a=b;而不能是 a=&b
         2为什么数组指针中只能是   a=&b;
         3为什么这两段程序都必须要定义一个数组b,不定义b直接使用指针进行输入输出操作会报错

大尾巴 发表于 2019-12-22 00:06:21

数组指针 里面那个输入函数的   &a改成b,刚才忘记改了
页: [1]
查看完整版本: 指针数组的问题