博客
关于我
C指针-指针和数组
阅读量:345 次
发布时间:2019-03-04

本文共 1467 字,大约阅读时间需要 4 分钟。

指针的基本使用与常见问题

在C语言中,指针是内存访问的重要工具,但也伴随着潜在的危险。以下是一些关于指针的实例和常见问题的分析。

指针的初值赋予问题

C语言中的指针需要正确初始化,否则可能会导致程序运行错误。以下代码展示了一个常见的错误:

int main(void) {    int *p = 0;    *p = 12;    // *p未初始化时,可能指向内存中的不可写入区域    // 这会导致程序在运行时崩溃    return 0;}

在上述代码中,*p未被正确初始化,可能指向内存的不可写入区域。当尝试再次赋值时,程序会崩溃。因此,正确的做法是将指针初始化为有效的内存地址。

指针的交换操作

指针的交换可以通过简单的交换指针所指的内存地址来实现。以下代码展示了一个交换两个整数的指针:

void swap(int *a, int *b) {    int t = *b;    *b = *a;    *a = t;}

在主程序中:

int main() {    int a = 5, b = 6;    swap(&a, &b);    printf("a=%d, b=%d\n", a, b);    return 0;}

输出结果会显示a=6, b=5,证明指针成功交换了两个整数的值。

指针的结果存储

在C语言中,函数可以通过指针返回修改后的变量。在以下代码中,divide函数通过指针返回除法结果:

int divide(int a, int b, int *result) {    int ret = 1;    if (b == 0) {        ret = 0;    } else {        *result = a / b;    }    return ret;}

在主程序中:

int main(void) {    int a = 5, b = 2;    int c;    if (divide(a, b, &c)) {        printf("%d/%d=%d\n", a, b, c);    }    return 0;}

输出结果为5/2=2,表明函数正确地将结果存储在指针&c中。

指针的数组遍历

使用指针遍历数组时,需要注意数组的大小和内存的有效访问范围。以下代码展示了一个使用指针遍历数组的示例:

int main(void) {    int ai[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1};    int *p = ai;    while (*p != -1) {        printf("%d\n", *p++);    }}

输出结果会依次打印数组中的每个元素,直到遇到-1

多维数组的传递与操作

C语言支持多维数组的传递与操作。以下代码展示了一个使用多维数组的示例:

void m(int a[]) {    printf("%d\n", a);}void n(int *p) {    printf("%d\n", *p);}int main(void) {    int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};    int b[][2] = {{0, 0}, {1, 1}, {2, 2}, {3, 3}};    m(a);    n(a);    return 0;}

在运行时,m(a)会输出a数组的地址,而n(a)会输出a数组的第一个元素的值。

转载地址:http://zzde.baihongyu.com/

你可能感兴趣的文章
python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
查看>>
python 利用pyttsx3文字转语音
查看>>
python 利用已有Ner模型进行数据清洗合并
查看>>
python 到大数据开发工程师_如何成为一个大数据开发工程师?
查看>>
python 加密解密(base64, AES)
查看>>
Python 包管理器和 Node.js
查看>>
Python 单词字母顺序不变且所有倒排
查看>>
python 反射机制
查看>>
python 启动提示IDLE's subprocess didn't make conne...
查看>>
python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
查看>>
Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
查看>>
Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
查看>>
python编辑器打不开_关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路...
查看>>
python编译exe同时支持32位_第三周:同时管理64位和32位版本的Python,并用Pyinstaller打包成exe...
查看>>
Python 和Java 哪个更适合做自动化测试?
查看>>
Python编程:掌握高级语言程序设计。从零基础到精通,收藏这篇就够了!
查看>>
python 图片转ico
查看>>
python 图片转文字、语音转文字、文字转语音保存音频并朗读
查看>>
python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法
查看>>
Python 在并行进程之间共享字典
查看>>