我只是想测试是否正确安装了新的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);