简述数组指针与指针数组的区别
数组指针:是一个指针变量,指向了一个一维数组, 如int (*p)[4],(*p)[4]就成了一个二维数组,p也称行指针;
指针数组:是一个数组,只不过数组的元素存储的是指针变量, 如int *p[4]
简述一下数组和指针的区别🔥🔥🔥🔥🔥
1.概念:
(1)数组:数组是用于储存多个相同类型数据的集合。 数组名是首元素的地址。
(2)指针:指针相当于一个变量,但是它和普通变量不一样,它存放的是其它变量在内存中的地址。指针名指向了内存的首地址。
2.区别:
(1)赋值:同类型指针变量可以相互赋值;数组不行,只能一个一个元素的赋值或拷贝
(2)存储方式:
数组:数组在内存中是连续存放的,开辟一块连续的内存空间。数组是根据数组的下进行访问的,数组的存储空间,不是在静态区就是在栈上。
指针:指针本身就是一个变量,作为局部变量时存储在栈上。
(3)求sizeof:
数组所占存储空间的内存大小:sizeof(数组名)
数组的元素个数: sizeof(数组名)/ sizeof(数据类型)
无论指针的类型是什么,32位平台永远是4,64位平台永远是8。
主函数→int main(int argc, char ** argv)函数中,参数argc和argv分别代表什么意思?
1)int argc 命令行参数个数
用来统计程序运行时发送给main函数的命令行参数的个数(上面那个203等,就是3个)
ps:命令行参数相当于外部的数据(以空格隔开,要是本身含空格要加上字符串"内容")
(2)char * argv[] 字符串数组
用来存放指向字符串的指针元素,每一个指针元素指向一个字符串参数。
各成员含义如下
简述结构体和共同体的区别:
1.struct和union都是由多个不同数据类型成员组成。
struct包含所有成员
union在同一时刻只能包含一个被选中的成员
2.在不考虑字节对齐补齐的情况下
strcut的字节数是所有成员的总字节数
union的字节数是最大成员字节数
3.赋值
struct不同成员之间赋值是互不影响的
union成员间的赋值将会对成员重写,原来的值就不存在了
简述一下全局变量和局部变量?
1.作用域不同:
全局变量作用于整个函数,局部变量作用于当前函数或者一个循环内
2.内存存储方式不同:
全局变量存储在静态全局区中
局部变量存储在栈区
3.生命周期不同
全局变量随着函数的销毁而销毁,跟主程序生命周期一样
局部变量生命周期在当前函数内或者循环内,随着函数退出或者循环退出就不存在了
4.使用方式不同
全局变量声明后在函数的各个部分都可以使用
局部变量声明后,在函数内部会优先使用局部变量,退出后就不存在了
简单叙述一下,原码,反码,补码以及他们的区别
引入反码和补码是为了简化二进制的减法计算
一个整数在计算机内是通过二进制进行存储的,该二进制最左边一位代表符号位,1代表负数,0代表正数。