若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句正确的是:A、p=s; B、p=k; C、 p=S[0] D、k=s

问题描述:

若有定义语句:char s[3][10],(*k)[3],*p;则以下赋值语句正确的是:A、p=s; B、p=k; C、 p=S[0] D、k=s
我想知道其他3个答案为什么是错误的!,

首先说 指针数组和数组指针.
数组指针 char (*k)[3];
数组指针 char s[3][10] *(p[3]) p[3]存储的都是char*指针.
p*是普通的char指针
所以 p=s[0]正确我没看懂你想表达的是什么?可能我的水平有限!!p=s; s+1一次移动的是10个字节,p+1一次移动1个字节p=k;与上同理。 k=s k+1一次移动3个字节 ,s+1个字节例子://逐步取消注释 运行。#include using namespace std;int main(){char s[3][10]={{"abc"},{"cde"}},(*k)[3],*p;char g[3]={'s','a','\0'};k = &g;p = g;//p = &s[0][0];与p=s[0]同理 这里不要取消注释。//测试p//cout