c语言字符串定义 c语言字符和字符串区别

想了解C语言中数组和指针的关系?这篇文章将占用你三分钟的时间。看完一定会有收获!排列将数组声明为数据类型名称[常量大小],并将数据类型的一个或多个实例分组到一个可寻址的位置。常量大小可以是一个表达式,但该表达式必须计算为常量,例如:#定义最大尺寸16…int l...

想了解C语言中数组和指针的关系?这篇文章将占用你三分钟的时间。看完一定会有收获!

排列

将数组声明为数据类型名称[常量大小],并将数据类型的一个或多个实例分组到一个可寻址的位置。

常量大小可以是一个表达式,但该表达式必须计算为常量,例如:

#定义最大尺寸16

int list[MAX _ SIZE+1];

c数组从元素0开始,所以像数组定义int a[3];将创建三个int软件,它们可以分别被命名为a[0]、a[1]和a[2]

请注意,即使定义很难说是a[3],也没有a[3]这个名字

和其他变量一样,全局和静态数组元素默认初始化为0,自动数组元素用垃圾值填充。

您可以用花括号中的一个或多个值初始化数组,例如:

int a[3] = {5,-2,17 };

ANSI C之前的编译器可能不允许在自动数组上初始化。

如果有一个初始化值列表,但没有指定常量大小,则数组的大小与初始化值的数量相同。

int q[] = {1,2,3 };是一样的。

int q[3] = {1,2,3 };

若要声明对另一个文件中定义的数组的外部引用,请使用extern int a[];

字符串替换

在C语言中,类型数组char用于表示一个字符串,字符串的结尾由一个设置为0的字节来标记(也称为NUL字符)

以下定义都将其数组设置为相同的值:

int str 1[]= { ‘一’,’b & # 8217,’c & # 8217,’0′};

int str 2[]= " ABC ";

Ansi也允许像int str[3]= “abc ”,也就是同一个int str[3]= { ‘一’, ‘b & # 8217, ‘c & # 8217};(省略了最后一个NUL字符)

多维数组

多维数组只是数组的数组(数组的数组…)

相似的多维数组m[3][2]存储在连续的存储位置,如m [0] [0],m [0] [1],m [1] [1],m [2] [0],m [2] [1]

指针是一个包含变量地址的变量。

有两个运算符与指针相关联:

运算符返回其参数的地址。

这个*通过指针引用它的参数来访问对象指针。

指针的一个简单例子是:

int i,j;

int * p;/*指向’int & # 8217指向*/的指针

I = 6;

p = & I;/*将` p & # 8217设置为“I & # 8217*/的地址

j = * p;/*威尔’j & # 8217设置为6(’我’的值)*/

* p = 5;/*威尔’我’设置为5 */

指针可以包含一个地址或称为指针的特殊值,它不同于所有有效的指针

指针上下文中的0将在编译时转换为空指针。

还有一个预处理宏NULL(在

像expression这样的表达式会导致语句是否为空指针,因为它与相同,而且由于它在指针的上下文中被转换为空指针,所以如果(!ptr)声明ptrif (ptr)if (ptr == 0)0ptr

同样,如果该语句是而不是a 空指针if (ptr) statementptr,则该语句将被求值。

指针不能指向:

常数(像3,not const类似于s const int a;)因为值3没有永久的存储器地址

变量,因为寄存器不在内存中,所以它没有内存地址。

类似的表达式(8 * k),由于没有永久内存地址,与常量大致相同。

指针和数组。

指针可以被认为是数组。

此代码:

int ***in(void){

int a [3] = {6,3,7 };

int * p = & a[0];/*将` p & # 8217指向` a & # 8217*/的第一个元素

if(a[0]= = p[0]&& ampa[1]= = p[1]&& ampa [2] == p [2])

返回1;

其他

返回0;

}

因为所有有效值p[n]a[n]都指向n

指针不是,但它也是一个数组。

这是C语言中最容易混淆的部分之一,所以这里有三种不同的方式来说明数组A和指向P A的第一个元素的指针之间的区别:

描述:使用直接寻址来访问数组,使用间接寻址来访问指针。

不太技术性的解释:A是地址,P是保存下面地址的地址A

极其啰嗦的解释:从计算机启动时的地址中检索值,移过去,从那里获取值;为了从中检索值,计算机将从地址开始,获取存储在其中的地址并向其添加N,然后从结果地址中获取值a[n]ap[n]p。

然而,在大多数情况下,指针和数组访问可以被视为具有相同的功能。主要的例外是:

1)sizeof运算符

Sizeof(array)返回所有元素数组中使用的内存量。

Sizeof(pointer)只返回指针变量本身使用的内存量。

2) &运算符

& amp是,数组别名& Array[0]并返回

& amp指针指针指针返回的地址

3)字符数组的字符串文字初始化

char array[]= “abc & # 8221将前四个元素设置为array & # 8217一’,’b & # 8217,’c & # 8217还有’0′

char * pointer = & # 8220abc & # 8221将指针设置为“abc”字符串的地址(它可能存储在ROM中,因此不能更改)

此外,数组不能调整大小或重新分配。

本文来自倾心之夏投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/623484.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 07-07
下一篇 07-07

相关推荐

  • js正则表达式语法大全 js正则验证特殊字符

    0.指导在正文开始之前,先说一下什么是正则表达式,为什么要用正则表达式。在我看来,正则表达式是一个程序可以识别的规则。有了这个规则,程序可以帮助我们判断某些字符是否符合我们的要求。但是我们为什么要使用正则表达式呢?我们来看一个常规的业务场景,验证一串字符是否

    2023-07-22 22:17:01
    545 0
  • c语言字符类型包括哪些 3分钟了解c语言基本数据类型

    C语言支持的基本数据类型通过前面的例子分析,我们知道了房子的类型,决定了房子的属性。比如一套一居室的房子,有空个房间;两室一厅的房子空。同样,在C语言中,提供了“数据类型”,可以定义变量。不同数据类型定义的变量有不同的存储空和用法。C支持的基本数据类型有:(1)

    2023-07-16 02:35:01
    722 0
  • c语言字符串定义 c语言字符和字符串区别

    想了解C语言中数组和指针的关系?这篇文章将占用你三分钟的时间。看完一定会有收获!排列将数组声明为数据类型名称[常量大小],并将数据类型的一个或多个实例分组到一个可寻址的位置。常量大小可以是一个表达式,但该表达式必须计算为常量,例如:#定义最大尺寸16…int l

    2023-07-07 07:51:01
    1006 0
  • unicode码表转换(输入某个字符)

    让我先考考你。你说这一串(ab-2?3?4)有多少个字符?这时你可以开始数数,123 …是的,我们确实用肉眼看到了9。java代码如下所示:有没有发现java判断的不是9,而是12!!!那是因为这个字符串里有2个字符ab-2?3?事实上,UTF 8号不能满足它。见下图:Java的字符串用UTF-1

    2023-05-31 12:42:01
    208 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信