开发者社区> 游客i2in3swgy4qoq> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《C语言深度剖析》第四章 指针和数组 p5(完结)( C语言从入门到入土(进阶篇)(一)

简介: 本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,基础部分省略了不少,是为了让大家能够更加深入了解C语言的魅力!因为为了避免与之前的文章发生赘述,所以就直接讲作者认为的精华部分哈!现在正文开始!
+关注继续查看

谁都不能阻挡你成为更优秀的人。


指针和数组


1. 数组参数和指针参数


1.1. 一维数组传参

数组传参是要发生降维的,因为如果要数组再拷贝会浪费空间,所以就降维成指向其内部元素类型的指针,这样传参只需要开辟一个指针变量的大小。

#include <stdio.h>
#include <windows.h>
void show(int a[10])
{
    printf("show: %d\n", sizeof(a));
}
    int main()
{
    int a[10];
    printf("main: %d\n", sizeof(a));
    show(a);//一定要传数组名,这才是首元素的地址,不需要&
    system("pause");
    return 0;
}

证明:

101.png

PS:注意传入的形参中的p也是一个变量,所以需要临时拷贝,形参实例化(就是有自己的内存空间)。


1.2. 一级指针传参

#include <stdio.h>
#include <windows.h>
void test(char *p)
{
        printf("test: &p = %p\n", &p);
}
int main()
{
        char *p = "hello world";
        printf("main: &p = %p\n", &p);
        test(p);
        system("pause");
        return 0;
}

102.png


结论:在C语言中,只要函数调用,必定发生拷贝。只不过要根据具体情况去决定,拷贝了什么,拷贝了多少!


这里问一个问题:函数调用,指针作为参数,要不要发生拷贝?答案是需要!因为指针变量,也是变量,在传参上,它也必须符合变量的要求,进行临时拷贝!  


1.3. 二维数组参数和二级指针参数

1.二维数组传参

2.要不要发生降维?

先说结论方便理解:

1.所有的数组都可以看做成一维数组

2.所有的数组传参,都要降维成指向其内部元素类型的指针。


1013.png


例如:

104.png

2. 函数指针


2.1. 函数指针的定义


就是指向函数地址的变量称为函数指针。


96.png97.png98.png99.png100.png


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《C语言程序设计进阶教程》一3.3 后执行式和交互式调试
本文讲的是C语言程序设计进阶教程一3.3 后执行式和交互式调试,本节书摘来华章计算机《C语言程序设计进阶教程》一书中的第3章,第3.3节, Intermediate C Programming[美] 陆永祥(Yung-Hsiang Lu) 著 徐东 译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
691 0
《C语言程序设计进阶教程》一3.4 生产代码与测试代码分离
本文讲的是C语言程序设计进阶教程一3.4 生产代码与测试代码分离,本节书摘来华章计算机《C语言程序设计进阶教程》一书中的第3章,第3.3节, Intermediate C Programming[美] 陆永祥(Yung-Hsiang Lu) 著 徐东 译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
725 0
【C语言】C语言之深入指针进阶(建议收藏以备不时之需)
【C语言】C语言之深入指针进阶(建议收藏以备不时之需)
0 0
【C语言】C语言之深入指针进阶(建议收藏以备不时之需)(二)
🗽初阶指针请点击此跳转 https://blog.csdn.net/DerrickWestbrook/article/details/117787490. 指针的主题,在上述链接文章中已经解释过了,我们已经知道了指针的概念: 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型的,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。 在本篇文章将继续讲解质指针的高级主题
0 0
C语言——指针的进阶
这是学习C语言指针进阶知识的文章
0 0
C语言——指针进阶终章
战至终章哈哈,加油
0 0
C语言——指针的进阶(上)
C语言——指针的进阶(上)
0 0
C语言——指针的进阶(中)
C语言——指针的进阶(中)
0 0
C语言——指针的进阶(下)
C语言——指针的进阶(下)
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
超全算法笔试 模拟题精解合集
立即下载
超全算法笔试-模拟题精解合集
立即下载
Java高级特性入门(二)
立即下载