首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么int *arr[]是指向int的指针数组,而char *arr[]是指向string的指针数组?

为什么int *arr[]是指向int的指针数组,而char *arr[]是指向string的指针数组?
EN

Stack Overflow用户
提问于 2021-05-06 14:26:55
回答 3查看 47关注 0票数 0

在C中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int *arr[]

显然是一个指向int的指针数组,但对于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char *arr[]

是指向字符串的指针数组,这是怎么回事?那么编译器是如何区分这两者的呢?我读了这个问题-

Char* array of chars, but int* not array of ints?

但是,对于指向字符串的指针数组,我们讨论的是大内存,编译器将不得不为字符串和指针数组单独创建内存,编译器是否以某种方式单独处理变量?

EN

回答 3

Stack Overflow用户

发布于 2021-05-06 14:31:48

int*char*的行为相同,只是后者被视为C字符串,而前者不被视为C字符串。一个C字符串只是一个指向char的指针,如“一个或多个字符取决于目标分配的内存大小”。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int *arr[] // Array of pointers to (at least one) int
char *arr[] // Array of pointers to (at least one) char (a.k.a. a "C string")

编译器没有特别区分,但所有默认的str-family函数只适用于char*。按照传统和惯例,char*是C字符串的定义方式。它很可能是在不同环境下的int*,或者甚至是一些完全不同的东西,比如一些操作系统如何使用UTF-16而不是8位编码。

在这两种情况下,int* x[]char* y[]的行为完全相同。

票数 2
EN

Stack Overflow用户

发布于 2021-05-06 14:31:36

不,编译器一般不会区分它们。

考虑一下声明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int a[] = { 1, 2, 3 };
int * pa[] = { a, a + 1,  a + 2 };

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char s[] = { '1', '2', '3' };
char * ps[] = { s, s + 1, s + 2 };

正如你所看到的,这没有主要的区别。

这是一个演示程序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>

int main(void) 
{
    int a[] = { 1, 2, 3 };
    int * pa[] = { a, a + 1,  a + 2 };
    
    for ( size_t i = 0; i < sizeof( pa ) / sizeof( *pa ); i++ )
    {
        printf( "%d ", *pa[i] );
    }
    putchar( '\n' );
    
    char s[] = { '1', '2', '3' };
    char * ps[] = { s, s + 1, s + 2 };

    for ( size_t i = 0; i < sizeof( ps ) / sizeof( *ps ); i++ )
    {
        printf( "%c ", *ps[i] );
    }
    putchar( '\n' );
    
    return 0;
}

程序输出为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 2 3 
1 2 3 

唯一的区别是,标准声明了字符串函数,这些函数需要一个指向字符串的第一个元素的char *类型的参数,而特别是对于int *类型,这种函数是不存在的。

因此,一些输出函数被特别设计为当其参数的类型为char *时输出字符串,因为字符串的标记值为'\0',这与元素类型为int的数组不同。

票数 0
EN

Stack Overflow用户

发布于 2021-05-06 14:39:31

C中的“数组”本质上是指针的包装器--它们做have differences,但是为了这个问题的缘故,你可以把它们看作是指向其中第一个元素的指针。

其次,C中的指针和数组可以下标-也就是说,您可以使用方括号([])来执行对它们的类似数组的访问。在引擎盖下面,这只是一些指针算法,用来获得所需的元素。

这意味着type* vartype var[]都可以是type的“数组”,但type* name也可以只是一个指向某些type类型数据的普通老式指针-在没有上下文的情况下查看它,您实际上无法分辨。

因此,int *arr[]要么是int“数组”的数组,要么是指向单个int的指针的数组

char *arr[]要么是char“数组”的数组,要么是指向单个char的指针的数组。

最后--C编译器并不关心它们被提供了什么,你在语法上正确地使用了它们--你可以将一个int*作为一个不是一个数组的数组来访问,并获得垃圾数据,但是C编译器的工作并不是告诉你不要这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67420149

复制
相关文章
BootStrap3如何禁止响应式布局
我查阅了资料发现将:less变量@screen-xs和@screen-sm设置为0并重新编译less可解决问题。但是最终效果还不是特别好,不过大体上算禁止响应式布局了!
卡尔曼和玻尔兹曼谁曼
2019/01/25
1.6K0
基于bootstrap3响应式Tooltip提示插件
ggtooltip.js是一款非常实用的基于bootstrap 3.X的jQuery tooltip提示插件。该bootstrap jQuery tooltip插件实用简单,支持在4个方向上像素tooltip信息,支持修改tooltip的背景色、前景色和边框颜色。 该jQuery tooltip插件实用简单,支持在4个方向上像素tooltip信息,支持修改tooltip的背景色、前景色和边框颜色。它的特点有:
小狐狸说事
2022/12/01
1.1K0
WordPress 响应式主题 Zanblog 2.0(采用Bootstrap3框架)
主题特色 优雅的UI设计 Zanblog 2.0 的配色更加精致、简约、大气、优雅、令人着迷。同样沿用扁平化设计风格,简约、大气,更加符合互联网的浏览习惯,也更利于CSS3技术的使用与网站性能的提升。 采用Bootstrap3正式版 众所周知,在Zanblog 1.x版本中,我们大胆地采用了Bootstrap3的开发者版本,所以存在着许多bug与不足,而在Zanblog 2.0中,我们重新引入了最新的Bootstrap3正式版,让你领略Bootstrap3带来的非凡魅力! 采用HTML5语义化标签重写页面结
星哥玩云
2022/06/11
5460
SAP ABAP——内表(二)【创建内表】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址:SAP ABAP——内表(二)【创建内表】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文主要介绍一下SAP
THUNDER王
2023/02/23
3790
SAP ABAP——内表(二)【创建内表】
SAP ABAP——内表(四)【内表命令】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址:SAP ABAP——内表(四)【内表命令】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文主要介绍一下SAP A
THUNDER王
2023/02/23
3650
SAP ABAP——内表(四)【内表命令】
SAP ABAP——内表(一)【内表概要介绍】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址:SAP ABAP——内表(一)【内表概要介绍】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文是SAP AB
THUNDER王
2023/02/23
6840
SAP ABAP——内表(一)【内表概要介绍】
SAP ABAP——内表(十)【读取内表数据】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址:SAP ABAP——内表(十)【读取内表数据】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文主要介绍一下SAP
THUNDER王
2023/02/23
5000
SAP ABAP——内表(十)【读取内表数据】
SAP ABAP——内表(九)【删除内表数据】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址:SAP ABAP——内表(九)【删除内表数据】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文主要介绍一下SA
THUNDER王
2023/02/23
1.1K0
SAP ABAP——内表(九)【删除内表数据】
SAP ABAP——内表(八)【修改内表数据】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址:SAP ABAP——内表(八)【修改内表数据】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文主要介绍一下SAP
THUNDER王
2023/02/23
6890
SAP ABAP——内表(八)【修改内表数据】
SAP ABAP——内表(七)【追加内表数据—COLLECT】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址:SAP ABAP——内表(七)【追加内表数据—COLLECT】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文
THUNDER王
2023/02/23
9260
SAP ABAP——内表(七)【追加内表数据—COLLECT】
SAP ABAP——内表(五)【追加内表数据—INSERT】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址:SAP ABAP——内表(五)【追加内表数据—INSERT】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文
THUNDER王
2023/02/23
6780
SAP ABAP——内表(五)【追加内表数据—INSERT】
SAP ABAP——内表(六)【追加内表数据—APPEND】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址: SAP ABAP——内表(六)【追加内表数据—APPEND】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文
THUNDER王
2023/02/23
1.4K0
SAP ABAP——内表(六)【追加内表数据—APPEND】
React Native commond+r 不起作用 无响应
commond + r 不起作用 请检查模拟器是否连接到了电脑键盘
onety码生
2018/11/21
9380
Docker - 容器内软件设置
概述 一个大概导览,可能会常用。 详情会在文章底部给连接。 具体内容 一、安装软件太慢换一个源 mv /etc/apt/sources.list /etc/apt/sources.list.bak cat <<EOF >/etc/apt/sources.list deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free deb http://mirrors.ustc.edu.cn/debian stable-updates ma
断痕
2021/01/21
6950
MySQL user表损坏案例一则
今天业务反馈某业务数据连接不上,登录看了一下,发现数据库服务已经挂了(由于特殊原因,该库没有监控,并且是单点--成本原因,刺激不?!)。于是查看日志,一直在反复刷下图信息。
DBA札记
2023/03/09
1.3K0
MySQL user表损坏案例一则
bootstrap3 组件
<span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
用户5760343
2019/10/14
6900
bootstrap3  组件
bootstrap3 js
tooltip 弹出框 popover image.png 折叠面板:accordion modal image.png image.png 轮播:carousel
用户5760343
2019/10/14
1K0
bootstrap3 js
MySQL | 表的内连接
数据操作语言:表连接查询(一) 从多张表中提取数据 从多张表提取数据,必须指定关联的条件。如果不定义关联条件就会出现无条件连接,两张表的数据会交叉连接,产生 笛卡尔积。 规定了连接条件的表连接语句,就不会出现笛卡尔积。 # 查询每名员工的部门信息 SELECT e.empno,e.ename,d.dname FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno; 表连接的分类 表连接分为两种:内连接 和 外连接 内连接是结果集中只保留符合连接条件的记录 外
Zkeq
2022/05/18
3.3K0
MySQL | 表的内连接
Power Pivot里的表间关系不起作用?
小勤:那有什么意义?反正我放了值进去都会起作用的,自然就变成了其相对应的关系了,干嘛不直接在拉字段到行字段的时候就限制好呢?
大海Power
2021/08/30
1.7K0
复制文件到Docker容器内
举例说明: 假设一个运行的容器ID为9a28f199688e,想要将本地文件/path/to/local-file 复制到容器中的 /path/to/destination 目录中。
程序新视界
2023/09/07
9280

相似问题

表的Bootstrap3响应不起作用

50

如果在容器div内拒绝响应

12

如果在表内绑定,则使用knockout

10

在容器内保留响应表

11

如果在母版页内,则日期选取器不起作用

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文