关于指针的一个小问题
2011-09-08 21:27
246 查看
设char s[6],*ps=s;,则正确的赋值语句是( )
A.s="12345"; B.*s="12345";
C.ps="12345"; D.*ps="12345";
C是正确的赋值语句,但是这个赋值和LZ想象的不一样。
C/C++ code
char s[6]; // 在栈上开一个字符数组
char *ps = s; // 定义一个字符指针,指向s所在的位置
ps = "12345"; // 把ps指向常量数据区的一个字符串。注意!!这以后ps就和s再也没有关系了
printf("%s\n", ps); // 输出12345
printf("%c",s[1]); // 没准会输出什么,也可能没输出。因为s这块内存根本就没赋值,不知道是什么内容
A.s="12345"; B.*s="12345";
C.ps="12345"; D.*ps="12345";
C是正确的赋值语句,但是这个赋值和LZ想象的不一样。
C/C++ code
char s[6]; // 在栈上开一个字符数组
char *ps = s; // 定义一个字符指针,指向s所在的位置
ps = "12345"; // 把ps指向常量数据区的一个字符串。注意!!这以后ps就和s再也没有关系了
printf("%s\n", ps); // 输出12345
printf("%c",s[1]); // 没准会输出什么,也可能没输出。因为s这块内存根本就没赋值,不知道是什么内容
A.s="12345"; //编译有问题的肯定就是这个了。s是个数组,不能用作左值 B.*s="12345"; // 编译器会把"12345"所在的常量数据区的位置转换成unsigned long,再转换成char,然后赋值给s[0]。这里应该有个warning,因为把指针转换成整数就很可疑,32位转换成8位可能丢失数据 D.*ps="12345"; // 同B。结果是ps[0]被赋值。这里的ps[0]、s[0]、*s、*ps都是一回事
相关文章推荐
- 关于Objective-C 对象release操作野指针的一个小问题探讨
- 关于C++指针的一个问题
- 关于函数指针的一个问题
- 前两天困扰我的一个关于指针和内存的问题的总结
- 一个关于字符指针的奇怪问题!
- 关于数组与指针的一个小问题
- 关于字符串指针初始化std::string的一个小问题
- 一个关于指针的问题,问题很简单,但容易出错,希望大家提出好的解决方法~~~
- 一个关于二维指针的问题
- 关于 将一个数组赋值给另外一个数组会重置原来数组的指针 的问题
- 由“一个关于指针的小问题”想到的:常量指针与指向常量的指针
- 关于一个指针取值的问题
- 关于static指针的一个严重问题
- 关于一个指针问题的困惑
- 一个关于指针的问题
- 一个关于指针间赋值及间接求值的问题
- 关于C指针的一个问题(获取内存)
- 关于指针和const限定符问题的一个简单判断方法
- C++中一个关于复制构造函数和指针的问题
- 关于指针的一个小问题