|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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]直接使用指针进行输入输出操作会报错
指针只是一个路标,空悬指针相当于指向外太空/异次元/地心的路标,你叫施工队去那里施工确定他们不会打死你么?
|
|