c语言中指针的定义以及各种使用方法的介绍

一、指针的介绍

在C语言中,指针是一个非常重要的概念。指针就是存储另一个变量内存地址的变量。

二、指针的定义

定义指针的基本语法是:

cpp 复制代码
datatype *name;

三、指针的使用

1、指针和基本类型

要定义一个指向整数的指针,可以这样做:

cpp 复制代码
int *pointer;

要使用指针,你必须将其初始化为变量的地址。你可以使用取址符(&)来获取变量的地址。例如:

cpp 复制代码
int x = 10;
pointer = &x;

要访问指针引用的值,你需要使用间接符号(*)。例如:

cpp 复制代码
printf("%d", *pointer);

2、指针和数组

在C语言中,数组名本身就是一个指向其第一个元素的指针。例如,如果你有一个名为array的数组,那么array就是一个指向array0的指针。

cpp 复制代码
int array[5] = {1, 2, 3, 4, 5};
int *p = array;
printf("%d", *p); // 输出1

3、指针和字符串

在C语言中,字符串字面值(如"Hello, World!")实际上是字符数组,并且在内存中存储为字符数组。你可以使用指针来存储和操作字符串。

cpp 复制代码
char *str = "Hello, World!";
printf("%s", str);

4、指针和函数

指针也可以用来传递大型数据类型到函数,这样可以提高程序的效率。

cpp 复制代码
void swap(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
}
 
int main() {
    int a = 10, b = 20;
    swap(&a, &b);
    printf("a = %d, b = %d", a, b);
    return 0;
}

5、指针和结构体

指针也可以用来操作结构体。

cpp 复制代码
struct Person {
    char *name;
    int age;
};
 
int main() {
    struct Person p;
    p.name = "John";
    p.age = 30;
    struct Person *pPerson = &p;
    printf("%s, %d", (*pPerson).name, (*pPerson).age);
    return 0;
}

6、指针和指针算术

指针可以进行算术运算。例如,如果你有一个指向数组的指针,你可以通过对指针进行算术运算来访问数组中的不同元素。

cpp 复制代码
int array[5] = {1, 2, 3, 4, 5};
int *p = array;
printf("%d", *(p+1)); // 输出2

7、指针和多维数组

在C语言中,多维数组可以看作是数组的数组,即二维数组可以看作是一个特殊的一维数组,其中每个元素都是一个一维数组。

cpp 复制代码
int array[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*p)[3] = array;
printf("%d", *(*p + 1)); // 输出4

8、指针和动态内存分配

指针也可以用来动态分配和释放内存。

cpp 复制代码
int *p = (int *)malloc(sizeof(int));
*p = 10;
printf("%d", *p);
free(p);
相关推荐
认真的酒窝20 小时前
自己动手开发编译器(十一)语义分析
java·开发语言
wbs_scy21 小时前
Linux C++ 高并发编程:线程池全链路深度解析,从原理到手撕实现
java·开发语言
JAVA面经实录91721 小时前
Linux 常用命令完整知识体系
java·linux·开发语言·汇编
贪玩的蛋挞21 小时前
C#与闭包
开发语言·c#
端庄的战斗机1 天前
javascript 设计模式(文章很长,请自备瓜子,水果和眼药水)
开发语言·javascript·设计模式
Full Stack Developme1 天前
Java LRU 与 LFU 算法及应用
java·开发语言·算法
C语言小火车1 天前
C++ 堆排序深度精讲:基于完全二叉树的选择排序进化,最坏情况 O(n log n) 的稳定王者
开发语言·c++·算法·排序算法·堆排序
北冥you鱼1 天前
abigen 最佳实践:从入门到精通,高效生成 Go 语言合约绑定
开发语言·golang·区块链
ALex_zry1 天前
C++26 std::complex 结构化绑定详解:auto [re, im] = c
c语言·开发语言·c++
Zw-awa1 天前
01-写了include之后到底发生了什么
c语言