我想了解指针的工作原理,所以我创建了这个小程序。首先我创建了一个指向char类型的p指针。
第一个问题是:如果我创建一个指针,它的值是一个内存地址(如果我将其指向非指针对象),但在我的例子中,它是"haha"。为什么char*会这样工作?我如何使用cin >> p给它添加值?
我的第二个问题是,我创建了一个q char,它具有我创建它时*p指针的值。但它的值和地址也是"h",为什么?它必须是这个char对象的内存地址!这没意义 :D (mingw - gcc)
#include <iostream>
int main()
{
/* char *p;
cin >> p; //forexample: haha */
char * p = "haha";
char q = *p;
std::cout << "&q = " << &q << std::endl; //&q = h
std::cout << "q = " << q << std::endl; //q = h
return 0;
}
更多信息:如果我先分配内存 char a [100];然后 char *p = a; 那么 &q = h»ŢĹ,显示的是“h”和一些混乱的东西。但它应该是一个内存地址!我的问题是,为什么它不是地址呢?
p
没有任何内存供您输入。 - chris