Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 你不能指定指针的地址吗?_C - Fatal编程技术网

C 你不能指定指针的地址吗?

C 你不能指定指针的地址吗?,c,C,虽然这个问题有点简单,但我真的不知道确切的解释是什么 char *ptr = 'a'; 我知道字符不是字符串,但在指针的第一个索引中存储“a”不是很明显吗?您可以指定指针的地址。基本上,它是指向指针的指针 char* ptr = "a"; char** addrOfPtr = &ptr; 请注意,在指针的第一个索引中存储“a”并不是这里真正要做的事情 “a”位于计算机ram中的某个位置。存储在ptr中的值是一个可用于查找ram位置的数字。它被称为“地址”,因为当人们描述这些地点时,他

虽然这个问题有点简单,但我真的不知道确切的解释是什么

char *ptr = 'a';

我知道字符不是字符串,但在指针的第一个索引中存储“a”不是很明显吗?

您可以指定指针的地址。基本上,它是指向指针的指针

char* ptr = "a";
char** addrOfPtr = &ptr;
请注意,在指针的第一个索引中存储“a”并不是这里真正要做的事情

“a”位于计算机ram中的某个位置。存储在
ptr
中的值是一个可用于查找ram位置的数字。它被称为“地址”,因为当人们描述这些地点时,他们将其比喻为家庭街道地址

因此,“a”不会存储在地址的第一个索引中,就像您存储在街道地址的第一个索引中一样。您居住在街道地址的家中,“a”的值位于存储在
ptr
中的地址值指定的内存中

请注意,这意味着“指向指针的指针”
addroftr
,包含
ptr
中的值所在的地址

----编辑以将点驱动回原点----


您可以看到
ptr\u ptr
的值是
ptr
的地址,这表明指针存储值的地址,其语法设计使得在该地址获取值比实际存储的地址更容易。

您可以指定指针的地址。基本上,它是指向指针的指针

char* ptr = "a";
char** addrOfPtr = &ptr;
请注意,在指针的第一个索引中存储“a”并不是这里真正要做的事情

“a”位于计算机ram中的某个位置。存储在
ptr
中的值是一个可用于查找ram位置的数字。它被称为“地址”,因为当人们描述这些地点时,他们将其比喻为家庭街道地址

因此,“a”不会存储在地址的第一个索引中,就像您存储在街道地址的第一个索引中一样。您居住在街道地址的家中,“a”的值位于存储在
ptr
中的地址值指定的内存中

请注意,这意味着“指向指针的指针”
addroftr
,包含
ptr
中的值所在的地址

----编辑以将点驱动回原点----

您可以看到
ptr\u ptr
的值是
ptr
的地址,这表明指针存储了值的地址,其语法设计使得在该地址比实际存储的地址更容易获得值

char *ptr = 'a';
相当于

char *ptr = 97; // This assumes ASCII encoding
虽然赋值本身有效,但取消引用此指针无效

如果要将指针指定给包含字符
'a'
的对象,可以使用字符串文字、数组初始值设定项或单个字符的指针:

char *ptr = "a";  // String literal

char a[] = {'a'}; // Character array
char *ptr = a;

char a = 'a';     // Single character
char *ptr = &a;
任务

char *ptr = 'a';
相当于

char *ptr = 97; // This assumes ASCII encoding
虽然赋值本身有效,但取消引用此指针无效

如果要将指针指定给包含字符
'a'
的对象,可以使用字符串文字、数组初始值设定项或单个字符的指针:

char *ptr = "a";  // String literal

char a[] = {'a'}; // Character array
char *ptr = a;

char a = 'a';     // Single character
char *ptr = &a;

指针必须具有分配给它的地址<代码>'a'不是地址。它是一个整数类型,值为
97
,假设为ASCII。如果分配
ptr
97
并尝试取消引用,则很可能会出现分段错误,因为地址
97
不存在


char*ptr=“a”是正确的,因为编译器将字符
'a'
\0'
存储在连续内存中,而
'a'
的地址存储在
ptr

指针必须有指定的地址<代码>'a'
不是地址。它是一个整数类型,值为
97
,假设为ASCII。如果分配
ptr
97
并尝试取消引用,则很可能会出现分段错误,因为地址
97
不存在


char*ptr=“a”是正确的,因为编译器将字符
'a'
\0'
存储在连续内存中,而
'a'
的地址存储在
ptr

你在想char*ptr=“a”;也许吧?@EnricoGranata是的。我早就知道了。说到C编程,我不是一个初学者,因为我有两个学期的时间我只是想知道为什么。@PaulJabines Pilipina and asawa ko。你在想char*ptr=“a”;也许吧?@EnricoGranata是的。我早就知道了。说到C编程,我不是一个初学者,因为我有两个学期的时间我只是想知道为什么。@PaulJabines Pilipina和asawa ko。谢谢你非常描述性的回答。:)不需要深入挖掘。不客气,我不介意“深入挖掘”。最好在第一次正确地学习这一点,因为指针将在即将到来的C程序中的许多尚未遇到的bug中扮演中心角色。:)玩得高兴谢谢你的描述性回答。:)不需要深入挖掘。不客气,我不介意“深入挖掘”。最好在第一次正确地学习这一点,因为指针将在即将到来的C程序中的许多尚未遇到的bug中扮演中心角色。:)玩得高兴这是否意味着您不能为指针指定地址?比如,字面上的数字(内存地址)。当然,你可以。例如,您可以这样做:
char*ptr=(char*)97。无论
97
是否为真实地址,您都可以执行此操作。这是否意味着您无法为指针指定地址?比如,字面上的数字(内存地址)。当然,你可以。例如,您可以使用d