char *a 与char a[] 的区别

char *a 与char a[] 的区别和char** argv与char *argv[]区别 char *a 与char a[] 的区别 char *a = "hello" 中的a是指向第一个字符‘a'的一个指针 char a[20] = "hello" 中数组名a也是执行数组第一个字符‘h’的指针 但二者并不相同: 看实例:把两个字符串相加: 结果: hello0123456789 对比: Segmentat 阅读详情

char *a = "hello" 中的a是指向第一个字符‘a'的一个指针

char a[20] = "hello" 中数组名a也是执行数组第一个字符‘h’的指针

但二者并不相同:

看实例:把两个字符串相加:


结果:


对比:


结果:


把字符串加到指针所指的字串上去,出现段错误,本质原因:*d="0123456789"存放在常量区,是无法修的。而数组是存放在栈中,是可以修改的。两者区别如下:


一. ”读“ ”写“ 能力

char *a = "abcd";  此时"abcd"存放在常量区。指针a只是静态的,只能“读”字串,而不具备对字串“写"的本事。比如:a[0]='m'不正确,而char a[20] = "abcd"; 此时 "abcd"存放在栈,定义了数组a,并且开了大小为20个字符空间,此时的数组名a是指向第一个字符'a'指针,它是动态的,可以对整个字符串进行"读写”操作。比如a[0] = 'm'正确


二. 赋值时刻

char *a = "abcd"; 是在编译时就确定了(因为为常量),而char a[20] = "abcd"; 在运行时确定


三. 存取效率

char *a = "abcd"; 存于栈上。在栈上的数组比指针所指向字符串快。因此慢,而char a[20] = "abcd"; 存于栈上。快


另外注意:

char a[] = "01234",虽然没有指明字符串的长度,但是此时系统已经开好了,就是大小为6-----'0' '1' '2' '3' '4' '5' '\0',(注意strlen(a)是不计‘\0’)


看一结构中出现的同样的问题:

#include<stdio.h>
typedef struct node
{
    int size;
}node;

void Init(node *n)
{
        n->size = 100;
}

int main()
{
        node *n;   //正文引用部分
        Init(n);   //正文引用部分

        return 0;
}

这样标记部分在调用Init函数时会出现“Segment Default", 因为此时 指针n是静态的,只有“读”的本事,不可以改变。


改为:

int main()
{
        node n;
        Init(&n);  //此时传送地址,为引用
        return 0;
}

或:

int main()
{
        node *n = (*node)malloc(sizeof(node));   //动态分配空间
        Init(n);  
        return 0;
}



做小程序支付时,我是怎么被“虚拟支付”绊了一跤的 微信小程序支付开发中,普通支付与虚拟支付存在本质差异。开发者常误将虚拟权益(会员、点数等)当作普通商品支付,导致审核失败。两者在审核关注点、结算方式、API调用及平台政策上都截然不同。关键点在于:1)先明确交易对象类型;2)产品命名需真实反映权益性质;3)支付成功≠业务完成;4)审核说明要详细描述交付逻辑;5)避免依赖过时规则。正确顺序应是:判断商品属性→选择支付类型→设计订单系统→准备审核材料。这个认知差异比技术实现更重要,提前理解平台规则可大幅减少返工。 阅读详情

相关推荐

Cadence Sigrity

目录 一、PowerSI 1、PowerSI仿真前设置 2、PowerSI提取S参数 (1)检查叠层 (2)选择需要提取的走线和GND (3)设置端口 (4)设置提取频率和提取方式 (5)运行仿真 一、PowerSI PowerSI是一个交流分析工具,适用于频域仿真。 S参数提取 电源阻抗提取 全波参数提取 阻抗、耦合检查 谐振分析 1、PowerSI仿真前设置 打开PCB文件: 打开后如图: 设置为单色后: 仿真前的设置:

fang_yang_wa的博客 3万+

C语言-char *a与char a[ ]的区别

C语言-char_*a与char_a[]的区别

让你爱上电路设计 5853

AUTOSAR—TM模块介绍及使用概要

根据所要测量的场景不同,有1us16bit、1us24bit、1us32bit、100us32bit四种类型可选;TM模块在服务层,提供一些基于时间的服务功能,如测量CPU和任务的负载,周期执行一些回调函数。2、对于需要在不同时间执行不同逻辑的周期任务中,可以搭建时间状态机:参考Tm用户手册;定时器复位、获取时间宽度、定时器转换、定时器同步、繁忙等待。偏移定时器实例的参考时间,直接将定时器数值进行偏移;以1us16bit定时器类型为例,讲几个常用函数。同步两个定时器,把源定时器时间值给到目的定时器。

qq_42479987的博客 605

c语言char a什么意思,C语言中char *a[ ]什么意思,他和char (*)a[ ]有什么什么区别?...

两者区别如下:一、”读“”写“能力char*a="abcd";此时"abcd"存放在常量区。通过指针只可以访问字符串常量,而不可以改变它。而char a[30]="abcd";此时"abcd"存放在栈。可以通过指针去访问和修改数组内容。二、赋值时刻char*a="abcd";是在编译时就确定了(因为为常量)。char a[30]="abcd";是在运行时确定三、指向地址所存储的值不同。对于char...

weixin_29585583的博客 6981

半导体行业周期分析:库存、需求与复苏路径深度解读

半导体行业作为现代科技产业的基石,其周期性波动受供需关系、库存水平和宏观经济等多重因素影响。从技术原理上看,行业景气度通常通过库存周转天数、晶圆厂产能利用率等核心指标进行监测,这些指标反映了产业链各环节的健康状况。在工程实践中,理解这些指标有助于企业进行库存管理和产能规划,从而提升运营效率。当前,半导体市场正经历结构性分化,其中**库存周转天数**和**晶圆厂产能利用率**成为判断市场拐点的关键。在应用场景上,汽车电子、人工智能等领域需求相对稳健,而消费电子则面临较大压力。本文聚焦于半导体行业的周期特征,探

weixin_29549793的博客 687

信号完整性基础04:串扰(1)

我们理解了“单个”传输线(传输线是信号路径+回流路径,切记~),但大多数情况下单独“传输线”的情况并不多见(理想情况下的同轴线缆可以算一个),大多数我们PCB板上有成百上千条走线,它们组成了一个“大社会”,就如当年的TVB神剧《创世纪》一样,到处充满着恩怨情仇;稍处理不慎,单板这个“社会”就会崩溃。那么我们要从哪里入手去理解它呢?最基本的就是从两条PCB走线(传输线)之间的串扰开始。好,年前倒数第二章:《为什么会有串扰》。 ps:我们了解了x射线是啥,那么今天开始讲“放射线”,这两种东西是否就是同一种呢~

WKEZHENG的博客 6033

(char*a 和 char a[])C语言之数据存储

今天在读《C和指针》时,读到了“字符串常量”这个东西,书里提到了“字符串常量的直接值是一个指向字符类型的指针,即char*,因此不能直接将一个字符串常量赋值给字符数组”,读到这里我也是似懂非懂,因此特地去网上查了查。以下是我的收获: 以下部分内容摘自(https://blog.youkuaiyun.com/yahohi/article/details/7427724) 首先要搞清楚编译程序占用的内存的分区形式...

weixin_40746176的博客 1万+

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+

char a[][] 和 char *a[] 的区别

char a[][]; char a[][10] = { "hello word", "hello word", "hello word" }; char a[][] 是二维数组,他规定第二个[]要有具体的大小,比如char a[][10],那么 char a[][10]就代表一组二维数组空间,每个一维数组空间最多可以存储10个字符,所以这中二维数组最大的缺陷是当需要很大的空间时不够灵活,char [][10]空间如下: 而char *a[] 则表示了有一个一维数组,但是这个一维数组存储的是地址

夜辉的博客 2810

RK3568-适配phy芯片ip101gri

复位时间查阅数据手册。

Paper_Love的博客 2643

华为OD机试真题 新系统【小学英语老师批改作文】

华为OD机试 新系统真题【小学英语老师批改作文】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【小学英语老师批改作文】

qq_45776114的博客 922

容易混淆的点:C语言中char* a[] 与 char a[] 的区别以及各自的用法

char *a[] 就是一个字符串数组,char a[] 就是一个字符数组。

weixin_49503250的博客 2852

Codex 自定义模型操作指南:CLI 与桌面客户端双端实操

检查版本 codex --version # 预期输出类似:codex-cli 0.133.0-alpha.1 # 如未安装 npm install -g @openai/codex假设你要接入DeepSeek,在# 临时设置(当前终端会话有效)export DEEPSEEK_API_KEY="sk-你的 DeepSeek API Key"# 永久设置(推荐,写入 shell 配置)

篮球界最会写bug的人;程序猿中打球最菜的人。 454

char *a与char a[]区别

char *a与char a[]区别: char *a = "hello"; //a指向字符串常量"hello"的首地址,a存放在栈上,"hello"保存在文字常量区 char a[] = "hello"; //数组名a也是指向字符串的首地址,a,"hello"都存放在栈上。 两者之间的区别: 将两个字符串相加: #include <stdio.h> #incl...

背着行囊去远方的博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C++ string和char* 区别, char** a 和 char* a[ ] 区别

1、定义: string:string是STL当中的一个容器,对其进行了封装,所以操作起来非常方便。 char*:char *是一个指针,可以指向一个字符串数组,至于这个数组可以在栈上分配,也可以在堆上分配,堆得话就要你手动释放了。 2、区别: string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。 char *的内存管理由用户自己处理,很容易出现内存不足的问题。 当我们要存一个串,但是不知道其他需要多少内存时, 用string来处理就最好不过了。 当你知道了存储的内存

是鲤鱼啊 3644

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别

C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑 1 数组的本质    数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。    指针也是一种变量,只不过它的内存单元中保存的是一个标识其他位置的地址。。由于地址也是整数,在32位平台下,指针默认为32位。。 3 指针的指向?    指...

W_H_M_2018的博客 1224

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

char* a与char a[]的区别,const char* a与char* const a的区别

请看具体示例 #include using namespace std; void main(void) { // char* a 与 char a[] 的区别 char* a = "abcdef"; // a为一指针,其值可以改变。现在a指向的是一常量字符串 cout << a << endl; a = "ghijkl"; // a现在指向另一

秦黎明的博客 6199

char a[] 和 char *str 的区别

char a[]="C++"; a[0]='c'; // 合法 char *p="C++"; p[0]='c'; // 合法但不正确 该段代码在VS2010下编译可以通过,但是运行时程序会停止工作,为什么呢?原因在于p[0]='c’这一语句。该语句试图修改p指向的字符串的首个字符,出现了错误。 原因在于两种方式对字符数组操作的机制不同。使用char *p="C++"语句后,编译器在内存的文字常量区分配一块内存,保存”C++“这

lion_cute的博客 742

const char *a与char const *a与char * const a的区别

内容会持续更新,有错误的地方欢迎指正,谢谢! 题目 说出以下四个语句的区别: const char *a char * const a char const *a const char * const a const和指针的基础知识: 指向常量的指针(C++Primer上叫 指向常量的指针)(底层const):自觉不去(靠它自己也不能)改变所指对象,而该对象若不是常量对象则其值...

陈云佳的专栏 4190

char a[3][4]与char *a[4]的区别

char a[3][4]与char *a[4]的区别 关于这个问题,其实很多教材都没有说清楚,包括谭浩强教授的C语言设计的说法也不太容易让人理解。今天我们就来说说这两个的区别,要搞清这个二级指针的区别,我们先来看一级指针。 char *a 月char a[32]的区别是什么?char a[32]表示程序在内存中开辟了长度为32个单元(每个单元的数据类型为char)的内存,a表示首个元素的地址;而c...

qq_43647635的博客 4368

char * a [ ] 与char a [ ] 的区别

首先,我们要知道char a [ ] 代表一段连续的地址,表示存储字符型的数据,如char a [10]表示存放10个字符的数组,char *s 代表的是字符数组指针 其中s 表示的是字符串hello 的首地址,而不是字符串本身,这个概念一定要清楚。接着我们说char * a [ ] ,这是char a [ ] 和char *s 的结合体,比如: 如何理解这句话呢?char * a [ ] 中 [ ] 的优先级大于* ,所以我们先看a[ ],也就是说数组a 中保存的数据类型为char * ...

m0_52569494的博客 1789
上一篇: Windows7 CMD命令提示符下的5个小技巧
下一篇: Gcc/MinGW/Cygwin/Msys 分别是什么?
辛天扬
博客等级 码龄18年 21粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值