我只是想测试是否正确安装了新的ide并尝试在IDE中以及使用gedit和GCC编译该基本程序,并且可以编译,但是在命令行中启动可执行文件后崩溃了-我没有知道什么地方错了,因为我对C语言中的指针还很陌生,并且需要花一些时间来围绕理论进行研究,据大多数人说。

码:

#include <stdio.h>
#include <string.h>

    char print_func(char *hi);

    int main(void) {
        char *hi = "Hello, World!";
        print_func(*hi);
    }

    char print_func(char *hi) {
        printf("%d \n", *hi);
    }


我尝试了这个:

#include <stdio.h>
#include <string.h>

char print_func(char *hi);

int main(void) {
    char *hi = "Hello, World!";
    print_func(&hi);
}

char print_func(char *hi) {
    printf("%d \n", *hi);
}


并且它输出44而没有崩溃。

最佳答案

如果您使用print_func(*hi);进行间接访问,则您要传递一个char,它是一个字节。因此,当您尝试读取一个较大的整数时,会发生访问冲突。您应该使用指针print_func(hi)调用函数。而且,如果要打印字符串的地址,最好在printf中使用%p

printf("%p \n", hi); // print the address of hi


如果要以hi打印第一个字符,请改用%c

printf("%c \n", *hi); // print first character of hi


如果要在hi中打印第一个字符的值,请改用%d进行铸造:

printf("%d \n", (int)*hi); // print the value of the first character of hi


要打印整个字符串,请使用%s并传递指针:

printf("%s \n", hi);

10-01 07:21
查看更多