首页 > 编程语言 >c++面试 笔试基础知识学习记录

c++面试 笔试基础知识学习记录

时间:2023-05-31 15:33:57浏览次数:50  
标签:指向 int 笔试 c++ 基础知识 char 数组 data 指针

1. int (*p)[4] 和 int* p[4]

int (*p)[4] ,p是一个指针变量,指向一个存放4个int变量的一维数组,p+1是向后移动数组长度个字节大小,也就是向后移动4个int字节的大小。

*(*(p+1)+2)=*(p[1]+2)

int *p[4] ,等价于int *(p[4]),[]优先级高于*所以p首先是一个数组。即定义了一个指针数组,p就是指针数组名,数组中存放了4个指向int变量的指针。和普通数组类似,只不过数组里存的是指针。

2.字符型指针数组

char* data[]={"1234","456","123145"}

上述语句中的元素“1234” “456”等都是char*类型的

所以data数组中存储了三个元素,元素类型为char*, data[0]就是“1234”,data[1]就是“456”.....

*data就是data[0],*(data+1)就是data[1]

为什么char*类型可以是“1234”这样的一个字符串变量呢,因为字符串变量的本质表现是其第一个字符的地址,char*变量中存储的就是该字符串首地址,结尾标志是\0。

 

函数调用时的入栈方式:首先是函数调用的下一条指令的地址入栈,然后函数参数入栈(顺序一般是从右向左依次入栈),接下来是局部变量入栈,调用函数运行完后,依次出栈,栈顶指针指向之前存的下一条指令的地址,程序从该位置继续运行。

关于char* p="abc" 和char p[]="abc"的区别,前者不能改变和重新赋值,后者可以改变其中的字符。具体如下:

指针常量和常量指针

指向常量的指针,就是常量指针,常量是不可以修改的。char buf[]="abcd",const char *p=buf,const修饰char。但是p可以重新指向其他的常量,方法:char buf2[]="1234",p=buf2;(这里隐式的把buf2转成了 const char*)

指针常量,指针本身是常量,不能改变其指向 。char buf[]="abcd",char* const p=buf,const修饰的指针p,指针p的内存是不可以修改的,所以使用这种方式必须初始化。p不可以指向其他的变量,但是p指向的变量的内容可以修改,例如:p[0]='m',此时p指向的变量内容为mbcd。

 

个人学习记录,如有错误请指出,感谢!

标签:指向,int,笔试,c++,基础知识,char,数组,data,指针
From: https://www.cnblogs.com/yz-lucky77/p/17445740.html

相关文章

  • C/C++杂记:NULL与0的区别、nullptr的来历
    某些时候,我们需要将指针赋值为空指针,以防止野指针。 有人喜欢使用NULL作为空指针常量使用,例如:int*p=NULL;。也有人直接使用0值作为空指针常量,例如:int*p=0;。 前者可能觉得:NULL作为空指针常量,名字很形象,可读性较强。后者可能觉得:NULL并不是C/C++语言的关键字,而是一......
  • C/C++杂记:深入虚表结构
    1.虚表与“虚函数表”在“C/C++杂记:虚函数的实现的基本原理”一文中曾提到“虚函数表”的概念,只是为了便于理解,事实是:虚函数表并不真的独立存在,它只是虚表(virtualtable)中的一部分内容。例:从图中可已看出,虚表除了包含虚函数指针,还包含其它一些信息(如:RTTI信息、偏移值等)。顺便......
  • 关于C++字符串的一些函数
    其实印象里,c的char用法反倒比c++的string深一点,可能是因为我对string的运用太少了吧。 提到C++的string,就得先提一下首先提一下C的char类型,毕竟C++是根据C延展过来的,继承了C的特性,而且C本身是没有string这个东西的。 char是什么?一个关键字,用于声明一个变量是字符类型。好吧,......
  • C++ 运算符
     运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,并提供了以下类型的运算符:算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。ht......
  • proc c++ vs设置
    1、在pc文件上右键,项类型中选择自定生成工具,点击应用才能看见自定义生成工具2.命令行和输出中中配置,proc是oracle的执行程序在(client_1\BIN)目录下 ......
  • c/c++零基础坐牢第十七天
    c/c++从入门到入土(17)开始时间2023-05-30 21:31:54结束时间2023-05-31 13:29:07前言:第九章多态性从作业七作业八实验三和读书笔记及体会四个方面进行学习分享,课本知识参考于清华大学出版社郑莉老师的《C++语言程序设计》第五版,以下为自制思维导图: 第九章 多态性1面向......
  • C/C++数据结构课程设计[2023-05-31]
    C/C++数据结构课程设计[2023-05-31]数据结构课程设计实验(训)指导书所在学院:计算机科学与工程学院编写说明一.实验总体目标《数据结构》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本实验的目标是,学生能正确理解和熟练掌握常用数据结构和算......
  • C++四种强制类型详解
    向上转型(上行转换)派生类对象转换为基类对象(包括指针和对象),直接转换由编译器完成,是绝对安全的内存里面:基类对象相当于只是换了个地址,换成了派生类中存储基类成员的内存地址,但是派生类对象中有的,基类没有的变量仍然存在内存中(保留了再次从基类转换成派生类的可能性)向下转型(下行......
  • C/C++杂记:运行时类型识别(RTTI)与动态类型转换原理
    运行时类型识别(RTTI)的引入有三个作用:配合typeid操作符的实现;实现异常处理中catch的匹配过程;实现动态类型转换dynamic_cast。1.typeid操作符的实现1.1.静态类型的情形C++中支持使用typeid关键字获取对象类型信息,它的返回值类型是conststd::type_info&,例:#include<type......
  • C/C++杂记:虚函数的实现的基本原理
    1.概述简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。例:其中:B的虚函数表中存放着B::foo和B::bar两个函数指针。D的虚函数表中存放的既有继承自B的虚函数B::foo,又有重写(override)了基......