指针初始化。它是如何工作的?

时间:2014-05-30 08:19:47

标签: c dev-c++

我在C中完成了我的编程课程,并且认为我会写下一些代码。繁荣!我遇到了很多问题。我猜C语言是如此复杂,甚至一本书也无法解释它是如何完全运作的。

这是我的问题(我试图用指针显示一些东西)

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void main()
{
   char *a;
   system("cls");
   *a = {"hello"};
   printf("%s",a);
   getch();
}

4 个答案:

答案 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就像我做的那样...希望它有用......