指针数组的问题
#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;
}
为什么第二个程序没有输出? 上面两个程序全是错的
数组指针
printf("%s",a); //没有有输出
另外,什么叫做 “没有有输出”
人造人 发表于 2019-12-21 17:42
另外,什么叫做 “没有有输出”
没有输出,多打了一个有,就是你在屏幕上看不见输出 人造人 发表于 2019-12-21 17:40
上面两个程序全是错的
没有错,可以执行 苏维埃码农 发表于 2019-12-21 19:50
没有错,可以执行
可以执行不代表没有错,
你两个程序的指针都是空悬指针,指向内存的随机位置。
出什么错也不奇怪。 Croper 发表于 2019-12-21 20:07
可以执行不代表没有错,
你两个程序的指针都是空悬指针,指向内存的随机位置。
出什么错也不奇怪。
多谢,明白了 #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直接使用指针进行输入输出操作会报错 数组指针 里面那个输入函数的 &a改成b,刚才忘记改了
页:
[1]