【发布时间】:2012-10-04 08:02:00
【问题描述】:
我想了解指针是如何工作的,所以我创建了这个小程序。首先,我创建了一个指向 char 的 p 指针。
第一个问题到此为止。如果我创建一个指针,它的值是一个内存地址(如果我将它指向一个非指针对象),但这次在我的示例中是“哈哈”。为什么它在 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] 分配内存;字符 *p=a;然后&q = h»ŢĹ,所以“h”有些乱。但它应该是一个内存地址!我的问题是,为什么不解决呢?
【问题讨论】:
-
那不安全。
p没有任何内存可供您输入。
标签: c++ pointers char dereference type-mismatch