【C语言学习】国嵌21__指针基础

1、指针基础函数

变量只是一段存储空间的别名,那么是否是必须经过这个别名才可使用这段存储空间?答案是否认的。咱们还能够经过指针也就是地址的方式来访问某段存储空间。spa

#include <stdio.h>

int main()
{
    int i = 5;
    int* p = &i;
    
    printf("%d, %08X\n", i, p);
    
    *p = 10;
    
    printf("%d, %08X\n", i, p);

    return 0;
}

运行结果:指针

5, 0022FF48
10, 0022FF48code

二、指针的本质orm

# 指针在本质上也是一个变量内存

# 指针须要占用必定的内存空间it

# 指针用于保存内存地址的值io

不一样类型的指针占用内存空间的大小相同。class

#include <stdio.h>

int main()
{
    int i;
    int* pI;
    char* pC;
    float* pF;
    
    pI = &i;
    *((int *)0x22ff4c) = 100; 
    
    printf("%0X, %0X, %d\n", pI, &i, i);
    printf("%d, %d, %0X\n", sizeof(int*), sizeof(pI), &pI);
    printf("%d, %d, %0X\n", sizeof(char*), sizeof(pC), &pC);
    printf("%d, %d, %0X\n", sizeof(float*), sizeof(pF), &pF);
    
    return 0;
}

运行结果:基础

22FF4C, 22FF4C, 100
4, 4, 22FF48
4, 4, 22FF44
4, 4, 22FF40

程序实现的功能:一、指针占用的内存空间二、指针的地址三、经过*号写内存

*号的意义

# 在指针声明时,*号表示所声明的变量为指针

# 在指针使用时,*号表示取指针所指向的内存空间中的值。*号相似一把钥匙,经过这把钥匙能够打开内存,读取内存中的值

# “*”还表明乘号

三、传值调用与传址调用

# 指针是变量,所以能够声明指针参数

# 当一个函数内部须要改变实参的值,则须要使用指针参数

# 函数调用时实参值将复制到形参

# 指针适用于复杂数据类型做为参数的函数中

利用指针实现变量交换函数:

#include <stdio.h>

#define SWAP(a, b) {int t = a; a = b; b = t;} //宏定义也能够实现变量交换

void swap(int *a, int *b) //函数定义实现变量交换
{
int t = *a;
*a = *b;
*b = t;
}

int main()
{
int i = 1; 
int j = 9;

printf("%d, %d \n", i, j);

swap(&i, &j);

printf("%d, %d\n", i, j);

return 0;
}

四、常量与指针

# const int *p;       //p可变,p指向的内容不可变

# int const *p;       //p可变,p指向的内容不可变

# int *const p;     /p不可变,p指向的内容可变

# const int * const p;  //p和p指向的内容都不可变

记忆口诀:左数右指

当const出如今*号左边时指针指向的数据为常量,当const出如今*后右边时指针自己为常量

指针小结:

# 指针是C语言中一种特别的变量

# 指针所保存的值是内存的地址

# 能够经过指针修改内存中的任意地址内容

相关文章
相关标签/搜索