C语言 指针与数组
我通俗的解释下,希望你能听懂。
指针的递增递减不能简单理解为+1或-1,这个1指的是一个地址的区段值。
指针是指向地址的,举个现实中的例子,这就像一个门牌号指向一户人家,门牌号的增加或减少,只是代表地址的移动。而这个移动的距离,又和每户人家的房屋面积有关,也就是说这个增加或减少的量,对于这2个地址之间的距离是毫无关系的。这里可以把房屋面积理解为计算机中数据类型在内存中占用的大小。
你的题目中,指针最先指向1000这个地址值,指针+1代表指针向前移动一个单位,也就是一个门牌号,但是由于是4个整型元素,我们知道int型在内存中占用4个字节,也就是说指针移动一个单位,实际上,在内存中是移动了4个字节。
也就是a+1=1004,
a+2=1008.依次类推。。
希望你明白了。
C语言中,指针和数组的区别和联系?
指针就是一个装地址的变量,数组是内存中的一个区域,而数组名是这个区域的首地址。也就是说你在定义指针的时候编译器只分配了一个变量的空间(空间大小由内存地址长度决定),而定义数组的时候编译器分配了一段区域的空间(空间大小由[
]里面的数字和数组的类型决定)。使用上你可以把一个地址赋值给指针,但是不能赋值给数组名。你可以直接给数组里面的变量赋值,这是安全的,因为内存已经申请好了,而给指针里面装个那个地址赋值就要小心了,因为指针里面那个地址很可能会出错。
c语言指针和数组的关系
c语言中,指针变量中可以保存任意的地址值;数组名是一个地址常量,不可以更改。
c语言指针和数组相关问题?
错误的原因在于:你在使用指针 p 时,没有对它取值。在这段代码中,p 指向了 text 数组的首地址,但它并不指向 text 数组的第一个字符串的首地址,因此直接输出 p 是无法得到预期结果的。
要想输出第一个字符串,可以这样写:
printf(“通过指针来获取首元素:%s\n”,*p);
另外,你可以发现,在输出 text 数组的时候,使用的是 *text,即通过数组名来获取首元素,而不是直接输出 text。这是因为,在 C 语言中,数组名本身就是一个指针,指向数组的首地址,取数组名的值就是取数组首元素的值。
下面是修改后的代码:
#includestdio.h
#includestring.h
int main()
{
char * text[]=
{
“string 1”,
“string 2”,
“string 3”,