‘壹’ c语言求助
你已经说了啊**k是指向指针的指针,即k是一个2级指针啊,举个例子吧,你想问路,你问了张三,张三说他不知道,但是李四知道,然后你通过张三找到了李四,然后李四告诉了你你想去的地方在哪里,这里张三就是k,李四就是p,k=&p,表示了k的值是p变量的地址
‘贰’ c语言地址问题
首先,写两个程序,同一个编译器运行的时候,编译器不会允许不同变量,地址相同的,会提示地址占用的,如果是一个程序中两个变量一个地址的话,那就看当前地址的值了;
其次,变量地址相同,存的数不一样的时候,以最后一次存的数为准,前面的数被覆盖了。
希望我能帮到你
‘叁’ c语言 地址问题
你要得到ELEM的地址,自然需要&,因为&是取地址命令啊~
‘肆’ c语言求地址操作问题
str[i]和string[k+1]都是地址,因此地址赋值不需要地址符,直接赋值即可:
str[i]=string[k+1];
‘伍’ C语言 求助
(1)为什么第一个是44?
主函数在定义变量的时候,把指针a指向整型变量x在内存存放地址,指针b指向整型变量y在内存存放地址,然后调用子函数fun(),在调用时由于传递的是形参,子程序会给传过来的参数重新分配内存,调用结束后分配的内存释放。在子函数中,b赋值给a,也就是把a也指向y的内存地址,a和b都指向y的内存地址,当然打印出来就是44了。
(2)为什么第二个是34?
由于主函数和子函数的a和b是不同的,返回后主函数的a和b的值并未发生任何改变,因此指针a还指向整型变量x在内存存放地址,指针b还指向整型变量y在内存存放地址,因此打印出来就是34.
(3)如果想让子函数修改a和b的值怎么办?
那就可以定义全局变量a和b,就是在主函数之上加上int *a,*b。把程序修改如下:
int *a,*b;
void fun(int *,int *)
{a=b;printf("%d%d",*a,*b);
}
int main()
{
int x=3,y=4;
a=&x,b=&y;
fun(a,b);
printf("%d%d",*a,*b);
return 0;
}
运行后就是你认为的那个结果。
‘陆’ C语言字符串地址引用问题,求助!
改成data[len1]-'0'
‘柒’ c语言求助!知道数组首地址怎么求出数组元素地址
单维数组名就是首地址,多维数组名就是第1维的首地址,因此取首地址,可以把数组名赋给对应的指针变量,或取索引为0的首个元素地址赋给对应的指针变量。举例:
单维
int
arr[10];
int
*
p
=arr;
或
int
*
p
=&arr[0];
二维
int
arr[10][10];
int
(*p)[10]
=arr;
或int
(*p)[10]
=
&arr[0];//
取第一维地址
int
arr[10][10];
int
*
p=
&
arr[0][0];
//
取多维中的首个元素
‘捌’ c语言 求助 二维数组 每行的首地址
你的理解是对的!
比如a[2][3]=[1,2,3,4,5,6],那么*a[1]=4,*(a[1]+2)=6
‘玖’ C语言数组地址问题
解释如下:
&a,*a,a,a[0]——都表示的是数组第0行第0个元素的地址;
*a[0]——这个特殊,表示第0行第0个元素的地址的地址;
a[2],&a[2]——都表示第2行第0个元素的地址;
&a[2][2]——表示第2行第2个元素的地址;
详见图片,我已经把数组中主要元素的地址和值都打印出来了,数组中对应的每个元素的地址写出来了,对照的找下对应元素的位置,应该能理解&a,*a,a,a[0],*a[0],a[2],&a[2],&a[2][2]是什么意思了
#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
};
printf("&a十六进制地址是%p,十进制是%d
",&a,&a);//数组名,a[3][4]
printf("*a十六进制地址是%p,十进制是%d
",*a,*a);
printf("a十六进制地址是%p,十进制是%d
",a,a);
printf("a[0]十六进制地址是%p,十进制是%d
",a[0],a[0]);
printf("*a[0]十六进制地址是%p,十进制是%d
",*a[0],*a[0]);
printf("a[2]十六进制地址是%p,十进制是%d
",a[2],a[2]);
printf("&a[2]十六进制地址是%p,十进制是%d
",&a[2],&a[2]);
printf("&a[2][2]十六进制地址是%p,十进制是%d
",&a[2][2],&a[2][2]);
printf("数组a[3][4]首元素a[0][0]的地址是%p,首元素a[0][0]的值=:%d
",&a[0][0],a[0][0]);
printf("数组a[3][4]首元素a[2][0]的地址是%p,首元素a[2][0]的值=:%d
",&a[2][0],a[2][0]);
printf("数组a[3][4]首元素a[2][2]的地址是%p,首元素a[2][2]的值=:%d
",&a[2][2],a[2][2]);
printf("一个int整型变量占的字节是:%d",sizeof(int));
return0;
}
‘拾’ C语言输出地址问题
首先,printf("i的地址为:%p",i);不是输出地址,而是输出i的值,但是会以16进制输出。
如果输出i地址,应该是 printf("i的地址为:%p",&i);
而%d就是以十进制输出i的值