|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
课后一习题,以下代码错在 指针没有初始化:
char *name;
printf("what's your name");
scanf("%s",name);
printf("your name is %s\n",name);
请问各大神,这个代码如何初始化?只有用加一个变量的那种方式吗?
1. char *name="abcd", 这样为什么不行。数组里不是可以这么写吗?
2. char a[] ="abc";
char *name = a; 当输入超过3个字母也不行。[]里不是没有限定长度吗?
3. char *name=NULL .也不行。说是只给了空间,没给具体的地址,但是。。。。
int *ptr = NULL;
int i;
ptr = (int *)malloc(10 * sizeof(int));
if (ptr == NULL)
{
exit(1);
}
memset(ptr, 0, 10*sizeof(int));
for(i = 0; i < 10; i++)
{
printf("%d",ptr[i]);
}
putchar('\n');
free(ptr);
可以正常运行。。。。各位大神帮忙解释一下吧。拜托啦
4.下面这个代码能够正常运行,指针不也没初始化吗?第二行malloc给了ptr一个地址。跟 int *p ; p=123;有什么不一样?卡死在指针上了。。。
int *ptr;
ptr = (int *)malloc(sizeof(int));
if (ptr == NULL)
{
printf("分配内存失败!\n");
exit(1);
}
printf("请输入一个整数:");
scanf("%d",ptr);
printf("你输入的整数是:%d\n",*ptr);
指针不深入确实有些地方搞不情楚。
声明一个指针,这个指针 仅仅是一个地址。 地址也就是一个 int型大小的空间。
也就是说你想用这个指针指哪它就指哪 , 只要把你想指向的地方的地址告诉这个指针(指针就是存放要指向的内容的 地址)
|
|