| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include<stdio.h> 
#include <stdlib.h> 
int main() 
{     char *a[10]; //定义一个指针数组,这个数组里面有10个元素,每个元素都是一个地址 
      char b[10];  //定义一个数组 
      scanf("%s",b);    
      *a=b;//给指针数组赋值 
      printf("%s\n",*a); //输出, 
          printf("%c",*(*a+2));//输出字符串中的指定字符 
      system("pause"); 
      return 0;   
}    
 
 
/*    char (*a)[10]; //定义一个数组指针,这个数组指针是一个指向有10个元素的数组的指针 
      char b[10]; 
          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[10],不定义b[10]直接使用指针进行输入输出操作会报错
 1  为什么 指针数组中只能是  *a=b;而不能是 a=&b 
两个用法都是不对的,或者至少说是不确切的。 
a作为一个数组,单独使用时作为一个指针看待, 
*a即*(a+0)即a[0],所以这语句实际为a[0]=b。a[1],a[2],a[3]...仍是空悬指针,将其设置为指针数组毫无意义。 
a=&b更是直接无法通过编译,因为你无法直接对数组赋值。
 
这个很好理解啊,指针数组是指向数组的单个指针。其实这样写:
 - typedef int string[20];
 
 - string b;
 
 - string* a;
 
 - a=&b
 
  复制代码
是不是更好理解,这和你之前的用法是完全等价的
     3  为什么这两段程序都必须要定义一个数组b[10],不定义b[10]直接使用指针进行输入输出操作会报错 
指针只是一个路标,空悬指针相当于指向外太空/异次元/地心的路标,你叫施工队去那里施工确定他们不会打死你么?
  
 
 
 |   
 
 
 
 |