我已经阅读了很多关于它的线索和问题并阅读了很多答案但是仍然难以理解差异以及何时应该使用什么?
我认为你应该在需要存储数据时使用char*而你不知道它的大小,因为它是动态的.另外我不确定我是对的,但是如果你宣布一个char*并且给它分配一个像这样的文字文本,我会理解我的理解:char*ch ="hi"; 它是一个常量,你无法改变,如果你试图改变它,你只需将ch指向另一个分配的内存空间保存新字符串?如果这样写:char ch = malloc(20); 然后你可以改变价值,如果你这样做:char ch [] ="hi"; char pch = ch; 您可以更改值,因为您指向数组并且数组指向ch [0]?
所有写的都是粗体是我从阅读中理解的,虽然我可能对我刚才说的大部分内容都是错的,这就是为什么我需要一个非常好的和简单的解释,所以我可以一劳永逸地理解差异,当我应该用什么.
编辑:
#include <stdio.h>
main()
{
char ch[] = "Hello";
char *p1 = ch;
char *p2 = p1;
char *p3 = *p1;
printf("ch : %s\n", ch);
printf("p1 address [%d] value is %s\n", p1, *p1);
printf("p2 address [%d] value is %s\n", p2, *p2);
printf("p3 address [%d] value is %s\n", p3, *p3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)