首页 > 其他分享 >C语言指针数组

C语言指针数组

时间:2025-01-07 12:58:45浏览次数:3  
标签:ptrArray num1 int C语言 char 数组 指针

1. 指针数组的定义

指针数组是数组,其元素为指针。定义格式为  数据类型 *数组名[数组大小] 。例如,定义一个能存放5个指向  int  类型数据的指针数组:

 

c

int *ptrArray[5];

 

 

2. 初始化

- 方式一:直接初始化

 

c

int num1 = 10, num2 = 20;

int *ptrArray[] = {&num1, &num2};

 

 

- 方式二:动态初始化

 

c

int num1 = 10, num2 = 20;

int *ptrArray[2];

ptrArray[0] = &num1;

ptrArray[1] = &num2;

 

 

3. 访问指针数组元素

通过指针数组访问其指向的数据,示例如下:

 

c

#include <stdio.h>

int main() {

    int num1 = 10, num2 = 20;

    int *ptrArray[] = {&num1, &num2};

    for (int i = 0; i < 2; i++) {

        printf("Value at ptrArray[%d] is %d\n", i, *ptrArray[i]);

    }

    return 0;

}

 

 

4. 指针数组处理字符串

指针数组常用于处理多个字符串,每个指针指向一个字符串的首地址。示例:

 

c

#include <stdio.h>

int main() {

    char *strings[] = {"Hello", "World"};

    for (int i = 0; i < 2; i++) {

        printf("String %d: %s\n", i + 1, strings[i]);

    }

    return 0;

}

 

 

5. 指针数组作为函数参数

指针数组可作为函数参数传递,函数可对其操作。例如:

 

c

#include <stdio.h>

void printStrings(char *strs[], int count) {

    for (int i = 0; i < count; i++) {

        printf("String %d: %s\n", i + 1, strs[i]);

    }

}

int main() {

    char *strings[] = {"Apple", "Banana"};

    int count = sizeof(strings) / sizeof(strings[0]);

    printStrings(strings, count);

    return 0;

}

 

 

6. 动态内存分配与指针数组

 

c

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main() {

    int n = 3;

    char **ptrArray = (char **)malloc(n * sizeof(char *));

    if (ptrArray == NULL) {

        printf("内存分配失败\n");

        return 1;

    }

    for (int i = 0; i < n; i++) {

        ptrArray[i] = (char *)malloc(50 * sizeof(char));

        if (ptrArray[i] == NULL) {

            printf("内存分配失败\n");

            for (int j = 0; j < i; j++) {

                free(ptrArray[j]);

            }

            free(ptrArray);

            return 1;

        }

    }

    strcpy(ptrArray[0], "Red");

    strcpy(ptrArray[1], "Green");

    strcpy(ptrArray[2], "Blue");

    for (int i = 0; i < n; i++) {

        printf("Color %d: %s\n", i + 1, ptrArray[i]);

        free(ptrArray[i]);

    }

    free(ptrArray);

    return 0;

}

 

 

上述代码先为指针数组分配内存,再为每个指针指向的字符串分配内存,使用完后释放内存以防止内存泄漏。

标签:ptrArray,num1,int,C语言,char,数组,指针
From: https://blog.csdn.net/2301_81152393/article/details/144983280

相关文章

  • 双指针算法专题
    目录1.移动零1.1算法原理1.2算法代码 2.复写零2.1算法原理  2.2算法代码3.快乐数3.1算法原理3.2算法代码4.盛水最多的容器4.1算法原理 4.2算法代码5.有效三角形的个数5.1算法原理5.2算法代码6. 剑指offer:和为s的两个数(原)6.1算法......
  • C++学习笔记#01——指针与链表
    在自学C++的时候,发现指针是一个很难绕开的东西,看了一些参考资料和别人的程序,写一些垃圾。Part1指针指针是一个指向一片内存地址的变量,相当于家的门牌号。我们即可以通过变量名来访问一个变量,也可以通过它对应的地址来访问。就像你的老师可以点你的名字找你,也可以找你宿舍的门......
  • C语言的学习路线
    C语言的学习路线C语言是一种广泛使用的编程语言,它以其高效、灵活和接近底层的特性被广泛应用于系统编程、嵌入式系统、操作系统和众多应用程序开发中。对于初学者来说,学习C语言不仅是了解计算机编程的一个良好起点,同时也为后续学习其他编程语言打下坚实的基础。本文将详细......
  • Objective-C语言的数据结构
    Objective-C语言中的数据结构Objective-C是一种面向对象的编程语言,其在苹果公司的软件开发中得到了广泛应用。它主要用于开发macOS和iOS应用程序。虽然Objective-C有许多丰富的特性,但在程序设计中,数据结构仍然是构建任何应用程序的基础。本文将探讨Objective-C中的几种常见......
  • node.js《c语言程序设计》网上考试系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于《C语言程序设计》网上考试系统的研究,现有研究多集中于传统考试模式向线上模式的简单转换,主要以功能实现为主,如基本的题目设置、答题与评分功能等。......
  • 数组练习三
    给定一个字符串,判断其中是否含有重复字符(三种方法):解1packageexercises;importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);//测试输入:Stringstr=s......
  • C语言基础:指针(常量指针和指针常量)
    main函数原型定义:main函数有多种定义格式,main函数也是函数,函数相关的结论对我们main函数也有效(也可以定义main函数的函数指针)main函数的完整写法: intmain(intargc,char*argv[]){} intmian(intargc,char**argv){}扩展写法: main(){}等价intmain(){} intmain......
  • Excel使用IF{1,0}虚拟数组+VLOOKUP实现联合查询.220507
    以此案例举例:使用IF({1,0})建立虚拟数据的方法,整体输入的公式是:=VLOOKUP(E2&F2,IF({1,0},A:A&B:B,C:C),2,0)输入完公式之后,需要按CTRL+shift+enter键使用if({1,0},A:A&B:B,C:C)来构建了一个不需要辅助列的虚拟数组。Excel中ctrl+enter和ctrl+shift+enter主要是用途上的不同......
  • 10. C++对象模型和this指针
    1. 成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象.classPerson{public:Person(){mA=0;}//非静态成员变量占对象空间intmA;//静态成员变量不占对象空间staticintmB;//函数也不占对象空间,所有函数共......
  • Go 语言中值传递与指针传递的选择之道
    目录Go语言中值传递与指针传递的选择之道一、Go中的传递本质二、如何选择传递方式1.遵循项目规范2.必须传地址的情况3.必须传值的情况4.可传值可传地址的情况三、值类型与引用类型1.值类型2.引用类型3.深浅拷贝四、方法接收器(Receiver)的选择在Go语......