总结指针相关面试题

本文详细讨论了C++中的指针相关概念,包括常量指针、指针常量、指针数组、指针指针等。通过实例解析了指针在内存管理、数组指针、函数指针等方面的应用,并指出常见错误,如未初始化的指针使用、对常量指针的非法修改等,以及可能导致的程序崩溃和内存问题。同时,探讨了指针在字符串常量和数组处理中的注意事项,如字符串拷贝和指针偏移的问题。
摘要由CSDN通过智能技术生成

1. char * const p;
  char const * p
  const char *p

上述三个有什么区别?

char * const p; //常量指针,p的值不可以修改
  char const * p;//指向常量的指针,指向的常量值不可以改
  const char *p; //和char const *p

2. char str1[] = “abc”;
  char str2[] = “abc”;

const char str3[] = “abc”;
  const char str4[] = “abc”;

const char *str5 = “abc”;
  const char *str6 = “abc”;

char *str7 = “abc”;
  char *str8 = “abc”;

cout << ( str1 == str2 ) << endl;
  cout << ( str3 == str4 ) << endl;
  cout << ( str5 == str6 ) << endl;

cout << ( str7 == str8 ) << endl;

打印结果是什么?

解答:结果是:0 0 1 1
str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域

  1. 以下代码中的两个sizeof用法有问题吗?

void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
  {
  for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
 if( ‘a’<=str[i] && str[i]<=‘z’ )
str[i] -= (‘a’-‘A’ );
  }

char str[] = “aBcDe”;
  cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
  UpperCase( str );
  cout << str << endl;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值