我在C中完成了我的编程课程,并且认为我会写下一些代码。繁荣!我遇到了很多问题。我猜C语言是如此复杂,甚至一本书也无法解释它是如何完全运作的。
这是我的问题(我试图用指针显示一些东西)
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main()
{
char *a;
system("cls");
*a = {"hello"};
printf("%s",a);
getch();
}
答案 0 :(得分:1)
*a = {"hello"};
取消引用指针并将内容分配给该内存位置。它崩溃的原因是因为指针未被初始化,即它没有指向任何东西(实际上它确实指向某个东西,但是某些东西是未定义的内存位置)。
如果您已完成以下操作,那么您的程序将起作用:
a = "hello";
a
的类型为char*
。 "hello"
的类型也是char*
。
答案 1 :(得分:1)
您不会以这种方式为char指向值:
*a = {"hello"};
你必须使用:
a="hello";
我不太清楚你想要做什么。如果您只想在屏幕上打印“hello”,为什么要使用指向char的指针?什么是getch()?你以这种方式使用那个函数:http://linux.die.net/man/3/getch你打算读一个角色吗?
我只会这样做:
#include <stdio.h>
main()
{
printf("hello");
}
你到底想干什么?
这是一本很好的参考指南:http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html
答案 2 :(得分:1)
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main()
{
char *a;// a is pointer which address is store in stack and when u initialize with any string then string is store in code section which cant be change
clrscr();
a = "hello";// this is the way to store the string but if when u assign while declaring as char *a= hello this will accept Remember hello is store in code where as address of pointer a is store in stack section
printf("%s", a);
getch();
}
〜
答案 3 :(得分:0)
为您提供另一种见解.. 刚才我在Dev-C ++ 5.6.3中尝试过它,它可以工作..
如果在声明时直接指定值,则可以:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
system("cls");
char *a = {"hello"};
printf("%s",a);
getch();
return 0;
}
还有一件事,clrscr
不是标准的c函数(它在我的测试中不起作用),那么如何在cls
中使用stdlib
就像我做的那样...希望它有用......