char *s ="开源中国"
char *prgv[]= {"开源中国","hello","world",NULL};
char **avgr;
*avgr =prgv[0];//报错,因为 *avgr 的类型是指针,prgv0的类型是字符型。类型不同,不能赋值
如果,这样解释的话,那么 "开源中国"也是字符型啊,为什么
char *s ="开源中国" 就可以呢?
当然有人解释说,s 指向了“开源中国”字符串的首地址
prgv[0]对应字的符串“开源中国”,为什么我不能理解为 *avgr指向了“开源中国”字符串的首地址?
<p>你的代码没错。你所指的报错,是不会出现的。*avgr就是指向了“开源中国”字符串的首地址。以下代码为证。</p>
#include<stdio.h>
int main(){
char *s ="开源中国";
char *prgv[]= {"开源中国","hello","world",NULL}; //prgv 是字符指针数组。
char **avgr; //argr 是一个指向字符指针的指针
*avgr =prgv[ 0 ]; /*没错,*avgr 的类型是字符指针,prgv[ 0 ]的类型也是字符指针型。
执行此行代码,使得 *avgr 指向 prgv[ 0 ] 所指的字符串"开源中国"。*/
printf("%s\n", *avgr); //输出 prgv[ 0 ]所指的字符串 "开源中国"
return 0;
}
输出:开源中国
<div class="ref">
你的代码没错。你所指的报错,是不会出现的。*avgr就是指向了“开源中国”字符串的首地址。以下代码为证。
#include<stdio.h>
int main(){
char *s ="开源中国";
char *prgv[]= {"开源中国","hello","world",NULL}; //prgv 是字符指针数组。
char **avgr; //argr 是一个指向字符指针的指针
*avgr =prgv[ 0 ]; /*没错,*avgr 的类型是字符指针,prgv[ 0 ]的类型也是字符指针型。
执行此行代码,使得 *avgr 指向 prgv[ 0 ] 所指的字符串"开源中国"。*/
printf("%s\n", *avgr); //输出 prgv[ 0 ]所指的字符串 "开源中国"
return 0;
}
输出:开源中国
在我这里,你我的两套代码都没报错。我的环境是:Dev-C++。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。