"typedef char * pc; const pc a;“ 为什么是a而不是a所指向的字符为const
2015-10-16 14:20
417 查看
问:声明如下:
typedefchar * pc;
constpc a;
为什么是a而不是a所指向的字符为const?
答:typedef的替换并不是简单的替换,在声明中,
constpc a;
a被声明为const的原因跟const inti中的i被声明成const的原因一样,a的声明不会“深入”typedef的内容来发现涉及了指针。
验证代码:
1 #include <stdio.h>
2
3 typedef char * pc;
4
5 int main(){
6 const pc a;
7 char b = 'A';
8 a=&b;//note
9 *a=b;
10 printf("*a = %c, b =%c\n", *a, b);
11 return 1;
12 }
编译报错信息如下:
zzl@SOFT30-46:~/test/test_const$ gcc -gtest_const_typedef.c -o test_const_typedef
test_const_typedef.c: In function ‘main’:
test_const_typedef.c:8:2: error: assignment of read-only variable ‘a’
结束
typedefchar * pc;
constpc a;
为什么是a而不是a所指向的字符为const?
答:typedef的替换并不是简单的替换,在声明中,
constpc a;
a被声明为const的原因跟const inti中的i被声明成const的原因一样,a的声明不会“深入”typedef的内容来发现涉及了指针。
验证代码:
1 #include <stdio.h>
2
3 typedef char * pc;
4
5 int main(){
6 const pc a;
7 char b = 'A';
8 a=&b;//note
9 *a=b;
10 printf("*a = %c, b =%c\n", *a, b);
11 return 1;
12 }
编译报错信息如下:
zzl@SOFT30-46:~/test/test_const$ gcc -gtest_const_typedef.c -o test_const_typedef
test_const_typedef.c: In function ‘main’:
test_const_typedef.c:8:2: error: assignment of read-only variable ‘a’
结束
相关文章推荐
- Android中Intent详解1
- Android中异步任务机制AsyncTask的理解
- shiro认证授权源码分析
- 电工助手App开发 第三周
- Ios蓝牙
- Binding的数据转换(Data Converter)
- javac -encoding utf8 HelloWorld.java ,错误:非法字符:\65279
- iOS RGB 颜色对照表
- Reveal UI调试利器,逆向app的实践教程:Reveal别人的 app(一)
- android AsyncTask介绍
- Ansi,UTF8,Unicode,ASCII编码的区别
- 在linux下执行一个简单的C程序
- iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
- Java was started but returned exit code=13
- Maven中央仓库查询
- 收藏-如何配置一个高效的 Mac 工作环境
- WPF如何获得变量异步回调函数时产生的异步回调
- Android内存优化(使用SparseArray和ArrayMap代替HashMap)
- JS获取request字符串
- vs/vc++中无法解析的外部符号