C语言几行小代码集锦,我快崩溃了。。。
发布网友
发布时间:2022-05-10 22:41
我来回答
共3个回答
热心网友
时间:2023-11-09 08:14
int main()
{
char *p;
scanf("%s",p);
printf("%s",p);
}
#include<stdio.h>
int main()
{
char *month[4];//四个指针变量
scanf("%s",month[0]);
printf("%s",month[0]);
}
以上两个属于同一种错误
char *p//系统仅仅只给p分配系统只为指针变量p分配4个存储单元,用于存放一个内存单元的地址.
//此时的p未指向任何存储单元,输入的字符串无法存放
可以通过p=(char*)malloc(sizeof(char)*100);//使p指向动态分配的内存,输入的字符串存入p指向的内存单元中
#include<stdio.h>
int main()
{
char *month[4];
scanf("%s",month);
printf("%s",month);
} //运行成功
#include<stdio.h>
int main()
{
char *month[4];
scanf("%s",&month[0]);
printf("%s",&month[0]);
} //运行成功
我是这样想的:
这里&month[0]等价于*&(month+0)也就是month
我上面提到系统仅仅只给p分配系统只为指针变量p分配4个存储单元
你这里把字符串存放在了存放指针变量p地址 的那个内存单元(4byte)
想下这个例子:
char a,*p;
scanf("%s",&a)//向a的地址所指向的内存单元输入值
scanf("%s",&p)//取出p的地址,向其所指向的内存单元输入值
我用
int main()
{
char *p;
scanf("%s",&p);
printf("%s",&p);
}
测试了下,发现输入4个字符的时候报错.
参考资料:http://blog.sina.com.cn/s/blog_5731c0b30100pgap.html
热心网友
时间:2023-11-09 08:14
看样子要说的很多!
试着理解下这个,从计算机存储数据的角度理解下:
#include<stdio.h>
int main()
{
char *month[4];
printf("%x\n%x\n%x\n%x\n\n",&month[0],&month[1],&month[2],&month[3]);//输出指针数组中每个元素的首地址
scanf("%s",&month[0]);//这表示以字符串的型式读取
//一个字符串存储到以&month[0]为首地址的内存中,
//并在后面加\0"表明字符串到此为止
printf("%s\n",&month[0]);//这表示从首地址&month[0]开始以字符串的型式
//读取一个字符串直到遇到'\0'为止,并输出到显示器上
scanf("%s",&month[1]);
printf("%s\n",&month[1]);
printf("%s\n",&month[2]);
return 0;
}
热心网友
时间:2023-11-09 08:14
指针是一个变量,所以要赋值的话需要先取地址,表示把数据存到指针对应的地址里面,读入都是这样的