网站建设公司的年报,网站建设 有限公司,网站的访问速度和什么有关系,网站流量指标#x1f436;博主主页#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️#x1f525;专栏系列#xff1a;线性代数#xff0c;C初学者入门训练 #x1f525;座右铭#xff1a;“不要等到什么都没有了#xff0c;才下定决心去做” #x1f680;#x1f680;#x1f680;大家觉不错… 博主主页ᰔᩚ. 一怀明月ꦿ ❤️专栏系列线性代数C初学者入门训练 座右铭“不要等到什么都没有了才下定决心去做” 大家觉不错的话就恳求大家点点关注点点小爱心指点指点 本篇文章为了提高效率也为了大家学起来更加方便我是使用C的处理方法,如果大家还没有学习C,也为大家提供C语言的版本指针与数组。 其实我发现指针与数组的难题主要是二维数组和指针的问题如果大家理解起来有些困难主要是大家没有弄懂二维数组的实质建议大家可以看一下 大佬总结的二维数组超强解析看完之后觉对这些题了如指掌 目录
回顾
一维数组
❤️指针与整形型数组
❤️指针与字符型数组
二维数组 回顾 数组-能够存放一组相同类型的元素。 指针-指针变量 数组是数组指针就是指针的 数组名就是首元素地址 数组名大部分情况下就是首元素地址 sizaof(数组名)表示整个数组计算的整个数组的大小 数组名取出的是整个数组的地址 一维数组
❤️指针与整形型数组
#includeiostreamusing namespace std;int main(){int a[]{1,2,3,4};coutsizeof(a)endl;//16//sizaof(数组名)表示整个数组计算的整个数组的大小coutsizeof(a0)endl;//4/8//表示计算首元素地址的大小coutsizeof(*a)endl;//4//a还是首元素的地址*a就是a[0]coutsizeof(a1)endl;//4/8//表示计算第二个元素地址的大小coutsizeof(a[1])endl;//4coutsizeof(a)endl;//4/8//a-整个数组的地址//int (*p)[4]a;coutsizeof(*a)endl;//16//相当于sizeof(a)coutsizeof(a1)endl;//16//a1跳过一个数组//a1还是一个地址coutsizeof(a[0])endl;//4/8coutsizeof(a[0]1)endl;//4/8return 0;}
❤️指针与字符型数组
#includeiostream#includestring.husing namespace std;int main(){char arr[]{a,b,c,d,e,f};coutsizeof(arr)endl;//6//sizeof计算的内存的大小单位是字节不关注内存里放的是什么//sizeof是操作符//strlen是函数是针对字符串求字符串的长度本质计算\0之前的字符coutsizeof(arr0)endl;//4/8//arr0是首元素的地址coutsizeof(*arr)endl;//1//*arr是首元素acoutsizeof(arr[1])endl;//计算第二个元素的大小coutsizeof(arr)endl;//4/8//整个数组的地址coutsizeof(arr1)endl;//4/8//跳过一个数组的地址coutsizeof(arr[0]1)endl;//4/8//第二个元素的地址coutstrlen(arr)endl;//随机值不知道亲\0的位置coutstrlen(arr0)endl;//随机值不知道亲\0的位置//coutstrlen(*arr)endl;//错误//strlen的原型为size_t strlen ( const char * str );应该传入地址//coutstrlen(arr[1])endl;//错误和上面的错误原因相同//coutstrlen(arr)endl;//随机值coutstrlen(arr1)endl;//随机值coutstrlen(arr[0]1)endl;//随机值return 0;}
#includeiostream#includestring.husing namespace std;int main(){char arr[]abcdef;coutsizeof(arr)endl;//7//里面还有一个‘\0’coutsizeof(arr0)endl;//4/8//arr0是首元素的地址coutsizeof(*arr)endl;//1//*arr是首元素acoutsizeof(arr[1])endl;//1//计算第二个元素的大小coutsizeof(arr)endl;//4/8//整个数组的地址coutsizeof(arr1)endl;//4/8//跳过一个数组的地址coutsizeof(arr[0]1)endl;//4/8//第二个元素的地址coutstrlen(arr)endl;//6//不计算\0coutstrlen(arr0)endl;//6//coutstrlen(*arr)endl;//错误//strlen的原型为size_t strlen ( const char * str );应该传入地址//coutstrlen(arr[1])endl;//错误和上面的错误原因相同//coutstrlen(arr)endl;//6//coutstrlen(arr1)endl;//随机值coutstrlen(arr[0]1)endl;//5 return 0;}
#includeiostream#includestring.husing namespace std;int main(){char* pabcdef;coutsizeof(p)endl;//4/8coutsizeof(p1)endl;//4/8//第二个元素的地址coutsizeof(*p)endl;//1coutsizeof(p[0])endl;//1coutsizeof(p)endl;//4/8coutsizeof(p1)endl;//4/8coutsizeof(p[0])endl;//4/8coutsizeof(p[0]1)endl;//4/8//第二个元素的地址coutstrlen(p)endl;//6coutstrlen(p1)endl;//5//coutstrlen(*p)endl;//错误//coutstrlen(p[0])endl;//错误//coutstrlen(p)endl;//随机值//coutstrlen(p1)endl;//随机值//strlen(p)和strlen(p1)没有关系coutstrlen(p[0]1)endl;//5return 0;}
二维数组
#includeiostreamusing namespace std;int main(){int a[3][4]{0};coutsizeof(a)endl;//48//二维数组的数组命名单独放在sizeof内部,算的是整个数组的大小coutsizeof(a[0][0])endl;//4coutsizeof(a[0])endl;//16//第一行的数组名计算的数组的大小coutsizeof(a[0]1)endl;//4/8//第一行的第二个元素的地址 a[0][0]1coutsizeof(*(a[0]1))endl;//4//第一行的第二个元素 *(a[0][0]1)a[0][1]coutsizeof(a1)endl;//8//aa[0]//a[i]a[i][0]//a1就是第二行的地址 a[0]1a[1]coutsizeof(*(a1))endl;//16//*(a[0]1)*(a[1])a[1]coutsizeof(a[0]1)endl;//4/8coutsizeof(*(a[0]1))endl;//16//a[1]拿到第二行的元素coutsizeof(*a)endl;//16
//*aa[1],a[1]是第二行的首元素sizeof(a[1])算的是第二行整个的大小coutsizeof(*a1)endl;//4/8//a[0]1//a[0][0]1a[0][1]coutsizeof(a[3])endl;//16
//计算的类型的大小,sizeof是在预处理的时候就完成计算了所以在编译的时候不会计算预处理的时候计算a[3]就相当于计算a[i]的类型大小return 0;} 如果大家还有不懂或者建议都可以发在评论区我们共同探讨共同学习共同进步。谢谢大家