首页 > 其他分享 >C语言中char *str[] 和char *str有什么区别

C语言中char *str[] 和char *str有什么区别

时间:2025-01-17 23:28:26浏览次数:3  
标签:C语言 char str 字符串 World Hello 指针

char str[] 和char str 的区别C语言中char str和char str[]的区别-CSDN博客

char *str[]char *str 在C语言中有不同的含义和用途,以下是它们的区别:

1. char *str

  • 类型:这是一个指向字符的指针。

  • 用途:通常用于指向一个字符串。字符串在C语言中是一个以空字符 '\0' 结尾的字符数组。

  • 示例

    char *str = "Hello, World!";

    在这个例子中,str 是一个指向字符的指针,它指向字符串 "Hello, World!" 的第一个字符。字符串 "Hello, World!" 存储在程序的只读数据段中,str 保存了这个字符串的首地址。

2. char *str[]

  • 类型:这是一个字符指针数组。

  • 用途:通常用于存储多个字符串的指针。每个数组元素都是一个指向字符的指针,可以指向不同的字符串。

  • 示例

    char *str[] = {"Hello", "World", "C", "Language"};

    在这个例子中,str 是一个字符指针数组,包含4个元素,每个元素都是一个指向字符的指针。这些指针分别指向字符串 "Hello""World""C""Language"

详细对比

特性char *strchar *str[]
类型指向字符的指针字符指针数组
用途指向一个字符串存储多个字符串的指针
初始化char *str = "Hello, World!";char *str[] = {"Hello", "World", "C", "Language"};
访问方式str[0] 访问第一个字符str[0] 访问第一个字符串的指针,str[0][0] 访问第一个字符串的第一个字符
内存布局一个指针变量,指向字符串的首地址一个数组,每个元素是一个指针,指向不同的字符串
修改内容可以通过指针修改字符串内容(如果是可修改的字符串)可以通过指针修改每个字符串的内容(如果是可修改的字符串)

示例代码

使用 char *str
#include <stdio.h>

int main() {
    char *str = "Hello, World!";
    printf("%s\n", str); // 输出: Hello, World!

    // 修改指针指向另一个字符串
    str = "Hello, C!";
    printf("%s\n", str); // 输出: Hello, C!

    return 0;
}
使用 char *str[]
#include <stdio.h>

int main() {
    char *str[] = {"Hello", "World", "C", "Language"};
    int n = sizeof(str) / sizeof(str[0]); // 获取数组的元素个数

    for (int i = 0; i < n; i++) {
        printf("%s\n", str[i]); // 逐个输出字符串
    }

    // 修改数组中的指针指向另一个字符串
    str[0] = "Hi";
    printf("%s\n", str[0]); // 输出: Hi

    return 0;
}

输出

Hello
World
C
Language
Hi

总结

  • char *str 是一个指向字符的指针,通常用于指向一个字符串。

  • char *str[] 是一个字符指针数组,用于存储多个字符串的指针。

  • 选择使用哪种类型取决于具体需求,如果只需要一个字符串,使用 char *str;如果需要多个字符串,使用 char *str[]

标签:C语言,char,str,字符串,World,Hello,指针
From: https://blog.csdn.net/2401_88591507/article/details/145215661

相关文章

  • C语言的数据类型和变量
    在C语言中,数据类型主要分为两大类,一类是内置类型,另一类是自定义类型,今天主要来说一下内置类型一、数据类型1、字符型字符型:char(是character的缩写)signedchar表示有符号的字符型,unsigned插入表示无符号的字符型,2、整型3、浮点型浮点型主要有三种,分别是float(单精度浮点......
  • C语言数据类型和变量(中)
    变量1.变量的创建上一篇我们所讲的是数据类型,而类型用来干什么的-创建变量的,在C语⾔中,我们把经常变化的值称为变量,不变的值称为常量,如intage;便是整型变量。变量在创建的时候就给⼀个初始值,就叫初始化。如charc='w';2.变量的分类全局变量:在⼤括号外部定义的变量就是全......
  • 最短路(floyd,dijkstra,spfa)
    最短路[floyd]思考枚举k作为中转点来进行赋最小值,原转移为a[k][i][j]=min(a[k][i][j],a[k-1][i][k-1],a[k-1][k-1][j]);经空间压缩后为a[i][j]=min(a[i][j],a[i][k]+a[k][j]);注:为多远最短路核心代码:voidfloyd(){ for(intk=1;k<=n;k++){ for(inti=1;i<=n;i++){......
  • C语言进阶复习
    今天回顾了数组,二维数组,多维数组,函数等知识点。做一个简单的练习从终端接收一个数,封装一个函数,判断该数是否为水仙花数。首先水仙花数是一个三位数,且每位数上的立方和值为该数本身。对于这个问题可以画一个流程图。根据流程图编写下列函数//判断一个数是不是水仙花数,是则......
  • C语言新手入门---分支与循环(下)
    前言&概括鼠鼠也是才学C语言,屏幕前的各位多指教,鼠鼠耐骂。浅浅讲一下怎么使用C语言三种循环结构的语句:whilefordo…while1、while循环(1)if语句和while语句在形式上的对比两者在语法结构上基本都是一致的,再度提醒if无{}只能管理紧邻的一个句子。if(exp1){语句}while......
  • C语言新手入门---分支与循环(上)
    前言鼠鼠也是才学C语言,屏幕前的各位多指教,鼠鼠耐骂。编程里的分支结构要理解其实也就是数学里的树状图,把所需要的情况一点点根据数据分类好,再用编程语言的语法写好就行。一、if语句1、if本身用法如果判断表达式的结果为真(也就是表达式内容正确(或者说表达式返回的值非0),......
  • C语言和C++的区别及面向对象的了解
    C语言和C++的区别语言类型:C语言:是一种面向过程的编程语言,主要关注算法和数据结构,强调对计算机硬件的直接操作和程序的执行效率。C++:是一种面向对象的编程语言,它在C语言的基础上扩展了面向对象的特性,如类、对象、继承、多态等,使得程序的结构更加清晰,可维护性和可扩展......
  • 2025最新超详细PycharmIDE安装配置完整版教程(详细步骤)
    包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】!PyCharm是目前最流行、使用最广泛的PythonIDE(IntegratedDevelopmentEnvironment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、......
  • Flink (九):DataStream API (六) Process Function
    1.ProcessFunctionProcessFunction 是一种底层的流处理操作,基于它用户可以访问(无环)流应用程序的所有基本构建块事件(流元素)状态(容错,一致性,仅在keyedstream上)定时器(事件时间和处理时间,仅在keyedstream上)可以将 ProcessFunction 视为一种可以访问keyedstate和定时......
  • Flink(八):DataStream API (五) Join
    1. WindowJoinWindowjoin作用在两个流中有相同key且处于相同窗口的元素上。这些窗口可以通过 windowassigner 定义,并且两个流中的元素都会被用于计算窗口的结果。两个流中的元素在组合之后,会被传递给用户定义的 JoinFunction 或 FlatJoinFunction,用户可以用它们输......