相关疑难解决方法(0)

char和char*(指针)

我想了解指针是如何工作的,所以我创建了这个小程序.首先,我创建了一个指向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"和一些混乱.但它应该是一个记忆地址!我的问题是,为什么不解决呢?

c++ pointers char type-mismatch dereference

8
推荐指数
1
解决办法
6万
查看次数

复合/字符串文字在哪里存储在内存中?

我看了;

复合文字是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"将存储在内存中?

c pointers compound-literals

8
推荐指数
2
解决办法
1080
查看次数

标签 统计

pointers ×2

c ×1

c++ ×1

char ×1

compound-literals ×1

dereference ×1

type-mismatch ×1