WordPress做推广,深圳网站建设seo优化,百度竞价推广怎么样,网站开发细节C语言进阶课程学习记录-第29课 - 指针和数组分析#xff08;下#xff09; 数组名与指针实验-数组形式转换实验-数组名与指针的差异实验-转化后数组名加一的比较实验-数组名作为函数形参小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程#xff0c;图片全部来源于课… C语言进阶课程学习记录-第29课 - 指针和数组分析下 数组名与指针实验-数组形式转换实验-数组名与指针的差异实验-转化后数组名加一的比较实验-数组名作为函数形参小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程图片全部来源于课程PPT仅用于个人学习记录 数组名与指针 实验-数组形式转换
#include stdio.hint main()
{int a[5] {0};int* p a;int i 0;for(i0; i5; i){p[i] i 1;}for(i0; i5; i){printf(a[%d] %d\n, i, *(a i));}printf(\n);for(i0; i5; i){i[a] i 10;//可行 }for(i0; i5; i){printf(p[%d] %d\n, i, p[i]);}return 0;
}/*
output:
a[0] 1
a[1] 2
a[2] 3
a[3] 4
a[4] 5p[0] 10
p[1] 11
p[2] 12
p[3] 13
p[4] 14用指针下标代替数组赋值可行*/实验-数组名与指针的差异
//ext.c
int a[] {1, 2, 3, 4, 5};#include stdio.hint main()
{// extern int a[];//case1/*output:a 00402000 //数组地址a 00402000 //首元素地址*a 1*/extern int *a;//case2/*output:a 00402000a 00000001*/printf(a %p\n, a);//printf(a %p\n, a);//1printf(*a %d\n, *a);//访问地址00000001 报错return 0;
}实验-转化后数组名加一的比较
#include stdio.hint main()
{int a[5] {1, 2, 3, 4, 5};int* p1 (int*)(a 1);int* p2 (int*)((int)a 1);int* p3 (int*)(a 1);printf(%d, %d, %d\n, p1[-1], p2[0], p3[1]);return 0;
}/*output:小端 数据低位放在低地址中01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 005 33554432 3*/实验-数组名作为函数形参
#include stdio.hvoid func1(char a[5])
{printf(In func1: sizeof(a) %d\n, sizeof(a));*a a;a NULL;
}void func2(char b[])
{printf(In func2: sizeof(b) %d\n, sizeof(b));*b b;b NULL;
}int main()
{char array[10] {0};func1(array);printf(array[0] %c\n, array[0]);func2(array);printf(array[0] %c\n, array[0]);return 0;
}/*output:
In func1: sizeof(a) 4
array[0] a
In func2: sizeof(b) 4
array[0] b
数组名作为函数形参会退化为指针*/小结
数组名与指针仅使用方式相同 数组名的本质不是指针指针的本质不是数组 数组名并不是数组的地址而是数组首元素的地址 函数的数组参数退化为指针