小猪的C语言快速入门系列(七)

小猪的C语言快速入门系列(七)

标签: C语言


本节引言

在第五节的时候我们对C里的指针进行了初步的学习,而作为C语言的灵魂,
当然不会就那么简单,本节我们来进一步学习指针,包括:函数与指针
指针数组二级指针内存的动态 以及 const修饰指针


本节学习路线图


1.函数与指针


1)指针作为函数的形参

2)指向函数的指针

3)指针函数

4)带参数的主函数

该程序需要用到命令行参数,需要先编译生成exe,然后cmd命令行来到生成的exe文件
所在目录下输入:文件名 one two three,结果会输出one two three。


2.指针数组

问题引入:如何保存一个字符串更好?如果保存的不止一个,而是多个字符串呢?

问题一回答

char name[20] = “~” ②char *name = “~” //前者定义了长度,不能直接赋值,明显后者比较灵活

问题二回答


3.二级指针


4.内存的动态分配

代码示例

动态分配10个int类型的空间大小,如果大于这个数目则动态分配,否则利用realloc
重新分配内存。

#include <stdio.h>  
#include <stdlib.h>  
#define N 10  

int main()  
{  
    int *p = 0;  
    int  i,num,*q = 0;  
    p = (int *)malloc((N * sizeof(int)));  
    if(p == 0)  
    {  
        printf("内存分配错误!\n");  
        exit(0);  
    }  
    printf("请输入要存储的元素个数:\n");  
    scanf("%d",&num);  
    if(num <= N)  
    {  
        for(i = 0;i < N;i++)  
        scanf("%d",p+i);  
    }  
    else  
    {  
        for(i = 0;i < num;i++)  
        q = (int *)realloc(p,(N + N)*sizeof(int));  
        if(q == 0)exit(0);  
        for(i = 0;i < num;i++)  
        scanf("%d",q + i);  
        p = q;  
    }  
    for(i = 0;i < num;i++)  
    printf("%3d",*(p+i));  

    printf("\n");  
    free(p);  
    return 0;     
}

5.使用const修饰指针变量

const 关键字修饰的数据类型是指 常类型,最简单的用法是用来定义const
常量,具有不变性,比如int const a = 10; 要注意一点:
const修饰的常量在声明的时候就要进行初始化赋值,不然后面是不能赋值的!

另外在与指针结合使用的时候,const 颠倒写 表示的意思是不一样的!

  • int const *a; //修饰指向的内容,a可变,a指向的内容不可变
  • int *const a; //修饰指针a,a不可变,a指向的内容可变
  • const int *a; //修饰指向的内容,a可变,a指向的内容不可变
  • const int *const A; //指针a和a指向的内容都不可变

 
上述结论可以自行修改下述例子里指针与指向的内容自行测试:

#include<stdio.h>
int main()
{
    int const a;
    a = 5;
    printf("a = %d\n",a);
    return 0;
}

本文链接小猪的C语言快速入门系列(七)
作者:Coder-Pig
出处http://blog.csdn.net/coder_pig
本文基于知识共享署名-相同方式共享 4.0 国际许可协议发布,欢迎转载,
演绎或用于商业目的,但是必须保留本文的署名及链接。åç


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值