C语言,指针 与 数组。

1.
&a取数组首地址,步长一数组。
a取数组首行地址,步长一行。
*a取数组首行首元素地址,步长一数组。

1.1这三条是正确的结论吗?
1.2该结论适用于多维和一维数组吗

2.
①int a[2][2]={{2,3},{6,7}};
②int *p=a[0];
③int i,sum=0;
④for(i=0;i<2;i++)
⑤ sum=sum+(*(p+1)+i);

2.1为什么第五行p的步长是一个元素
2.2如何把这里的p的步长变成一行以实现控制a数组第0行或第1行的相加

第1个回答  2019-02-28
比如
p指向的是数组第一个元素的地址 所以*p就是取p指向的这个地址的值.
B错在str是指向字符串的指针
比如
printf("%s\n",str);会输出整个Program
由此可以说明BCD都是错的
字符串的表现形式
在C程序中,可以用两种方法实现一个字符串。
1. 用字符数组实现。
[例8.11]
void main(void)
{static char string [ ]="I Love China!";
printf("%s\n",string);
}
运行时输出: I Love China!
和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址,(见图8.17)。string[4]代表数组中序号为4的元素(v),实际上string[4]就是*(string+4),string+4是指向字符“v”指针。
2. 用字符指针实现。
可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。
[例8.12]
void main(void)
{char *string="I Love China!";
printf("%s\n",string);
}
在这里没有定义字符数组,但C语言对字符串常量是按字符数组处理的,实际上在内存开辟了一个字符数组用来存放字符串数组。在程序中定义了一个字符指针变量string。并把字符串首地址(即存放字符串的字符数组的首地址)赋给它(见图8.18)。有人认为string是一个字符串变量,以为定义时把"I Love China!"赋给该字符串变量,这是不确切的。追问

感谢,字符串指针我还没看到,不过可以学习

第2个回答  2019-02-28
第一问:前两句是对的,使用于多维与一维数组。
第三句是错的,*a,在一维数组中是首元素的值,二维数组中是首行首元素地址,步长一元素。
第二问:为什么第五行p的步长是一个元素?
因为p指向的是int类型,所以步长是一个int类型。
如何把这里的p的步长变成一行以实现控制a数组第0行或第1行的相加?
建议定义为数组指针 int (*p)[2] = a;
建议楼主看一本书,C语言深度解刨追问

好的谢谢,在看c语言基础备考二级,讲的确实是比较基础不太深入,回去入手一本深度解剖吧,虽然正妻是python_(:з」∠)_

本回答被提问者采纳
第3个回答  2019-02-28
你的p就是步长一行。
第4个回答  2019-02-28
C语言是一种高级编程语言,目前的版本是vC糸列。
第5个回答  2019-02-28
这是个什么数据?追问

是C语言噢

c语言数组和指针的区别
C语言中,数组和指针是两个不同的概念,它们之间存在显著的区别:定义与本质:数组是一种数据结构,用于存储固定数量的同类型元素的连续内存块。而指针是一个变量,其值是一个内存地址,用于指向内存中的某个位置。内存分配:数组在编译时分配内存空间,其大小在声明时确定且固定不变。指针本身只占用固定...

C语言,指针 与 数组。
} 在这里没有定义字符数组,但C语言对字符串常量是按字符数组处理的,实际上在内存开辟了一个字符数组用来存放字符串数组。在程序中定义了一个字符指针变量string。并把字符串首地址(即存放字符串的字符数组的首地址)赋给它(见图8.18)。有人认为string是一个字符串变量,以为定义时把"I Love Chin...

C语言中,指针和数组的区别和联系?
区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针。所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以就会觉得指针和数组名很像,但是必须要注意的是,数组名只是指针中的一种,...

C语言:简述一下“数组和指针的关系”?
(1)指针数组:它实际上是一个数组,数组的每个元素存放的是一个指针类型的元素。int* arr[8];\/\/优先级问题:[]的优先级比*高\/\/说明arr是一个数组,而int*是数组里面的内容\/\/这句话的意思就是:arr是一个含有8和int*的数组1234 请点击输入图片描述 (2)数组指针:它实际上是一个指针,该...

c语言指针与数组,怎么联系起来?
1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。

在C 语言中 “指针和数组等价” 到底是什么意思?
在 C 语言中对数组和指针的困惑多数都来自这句话。说数组和指针 “等价”不表示它们相同, 甚至也不能互换。它的意思是说数组和指针的算法定义可以用指针方便的访问数组或者模拟数组。特别地, 等价的基础来自这个关键定义:一个 T 的数组类型的左值如果出现在表达式中会蜕变为一个指向数 组第一个成员...

C语言中,数组和指针定义在内存方面的区别在哪?
1,指针变量用于保存数据的地址,数组用于直接保存数据(当然你可能见过,数组的每个元素是指针,不过,一组指针也是数据,它们各自的内容才是地址)2,访问方式:指针是间接访问,首先取得指针的内容作为地址,再去该地址访问数据;数组是直接访问,数组名即是地址 3,指针通常用于动态数据;数组通常用于固定...

C语言 第10章-数组与指针
C语言第10章-数组与指针标量变量存储单一值时,我们称其为数组。设置只读数组时,用const,只能读取数组内容,不能修改。初始化数组时,若值少于元素数,剩余位置默认为0;省略方括号中的数字,编译器会根据列表项数自动确定数组大小。sizeof函数用于获取数组整体大小(以字节计)和单个元素大小,通过二者可...

c语言数组不可以当成指针使用,但是指针可以当成数组使用吗?
可以 1.指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。2.数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。3.核心思想是通过...

C中数组和指针到底是否相同?
2.数组名作为左值时不能被修改,而指针作为左值时可以被赋值。 3.指针可以进行自增(自减)运算(void指针除外,因为void指针无法知道步长),但是数组不能进行自增或者自减运算。 4.理解char *p="abcde"和char str[]="abcde"的区别。C语言标准对此作了说明:规则1:表达式中的数组名被编译器当做一个指向该数组第一...

相似回答