c语言数组给二级指针赋值问题求解~

2024-12-03 14:29:12
推荐回答(5个)
回答1:

首先,你理解的没错。
b和a都指向了同一块内存。
这块内存的内容是61 62 63 00 41 42 43 00 31 32 33 00
a[0]这个指针,我们知道这个指针是一个指向四个字符的字符串,所以可以得到它的值是abc\0,即61 62 63 00
而对于d指针,我们仅仅知道它是一个二维的指针,并不知道它第一维的空间是多大。于是取里面的值当作一个指向char的一维指针,一个指针占4个字节,按低位往高位存储。你可以这样理解,假设有一个char * pchar = d[0],那么 pchar的就是固定的,是一个指向0x00636261的指针。这就是你看到 "\0cba"了。

回答2:

b=a;b[0]就是*(b+0),也就是a[0]的值,a[0]是a[0][0]的地址。所以输出的是一个地址。我猜你看到的应该是个十六进制数吧,你是不是认为是你第一个字符串的倒序啊,你试着把第一个字符串改变一下,看输出的样子,就能确定你输出的这个到底是不是十六进制数了

回答3:

我这编译过不了,说"d=a”有误,不同类型

回答4:

哪来的b?并且的d【0】的输出都是为整型数,,怎会有字母呢,,你是不是把题抄错了??

回答5:

要么你查下printf() 的输出