做预定网站的作用,个人博客网站页面,手机之家报价大全2021,福建公司网站建设函数定义 参考书籍章节9.7 无论函数定义的参数是数组还是指针#xff0c;在编译的时候#xff0c;编译器都将在栈上开辟一个空间存放入参的地址#xff0c;换句话说#xff0c;也就是在函数内部都当做指针处理。 #include stdio.h
#include stdlib.hchar g…函数定义 参考书籍章节9.7 无论函数定义的参数是数组还是指针在编译的时候编译器都将在栈上开辟一个空间存放入参的地址换句话说也就是在函数内部都当做指针处理。 #include stdio.h
#include stdlib.hchar ga[] abcdefgijklm;void my_pointer_func(char *ca)
{printf(my_pointer_func\n);printf(%#x \n, ca);printf(%#x \n, ca[0]);printf(%#x \n, ca[1]);printf(%#x \n, ca);
}void my_array_func(char ca[])
{printf(my_array_func\n);printf(%#x \n, ca);printf(%#x \n, ca[0]);printf(%#x \n, ca[1]);printf(%#x \n, ca);
}int main()
{my_array_func(ga);my_pointer_func(ga);return 0;
} my_array_func 0x61fe00 0x403010 0x403011 0x403011 my_pointer_func 0x61fe00 0x403010 0x403011 0x403011
多维数组
参考书籍章节10.1
数组的偏移量总是在编译时确定的
arr[i][j]、int arr[5][10]、int *arr[10] 当你使用arr[i][j]时你不能通过你的使用方式知道arr的声明是int arr[5][10]亦或是int *arr[10]以上两种声明你都可以使用arr[i][j]这种形式来访问。但是需要注意的是编译器生成的代码是完全不一样的因为int arr[5][10]在编译时有了一块确定且连续的内存编译器完全知道如果想对arr去做偏移但是int *arr[10]却是灵活多变的因为它只是有10个连续内存空间的整形指针而已指针指向的空间是不确定的所以编译器只能让程序运行时再通过计算算出偏移量而第一种是在编译时就算出来了偏移量。 这里也体现了一部分哲学的内容如果你想要点东西就必须要牺牲点其他的东西比如在这里你想要灵活性就牺牲了执行效率。
锯齿数组
参考书籍章节10.3
未完待续