我想了解指针是如何工作的,所以我创建了这个小程序.首先,我创建了一个指向char的ap指针.
第一个问题是在这一点上.如果我创建一个指针,它的值是一个memoryaddress(如果我指向一个非指针对象),但这次它在我的例子中是"哈哈".为什么它在char*中以这种方式工作?我怎么能用cin >> p增加它的价值呢?
我的第二个问题是,我创建了一个aq 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;
}
Run Code Online (Sandbox Code Playgroud)
更多:如果我首先使用char a [100]分配内存; char*p = a; 然后&q = h»ŢĹ,所以"h"和一些混乱.但它应该是一个记忆地址!我的问题是,为什么不解决呢?
我看了;
复合文字是C99功能,可用于创建没有名称的数组.考虑这个例子:
int *p = (int []){3, 0, 3, 4, 1};
Run Code Online (Sandbox Code Playgroud)
p指向包含3, 0, 3, 4和的五元素数组的第一个元素1.
其实我想知道,这个数组是否会存储在内存中,因为它没有名字?
换言之,如果是
char* str = "hello"
Run Code Online (Sandbox Code Playgroud)
字符串"hello"将存储在内存中?