‘壹’ c语言取地址符有什么用,为什么scanf一定要用&
取地址符的作用是告诉系统定义的变量的值存放在内存空间的地址,scanf函数就根据这个地址值寻址,然后从这个地址空间中取出我需要的数据值,对于变量来说,只能通过&a的方式获取到该变量在内存中的地址,对于指针变量和数组,就不需要这个取地址符了。代码说明如下:
//变量
inta;
scanf("%d",&a);
//指针
inta,*p;
p=&a;
scanf("%d",p);
//数组
inta[10];
for(inti=0;i<10;i++)
scanf("%d",a+i);//a+i<===>&a[i]
‘贰’ c语言函数参数里的取地址符号是什么意思
顾名思义,取地址符的用处 就是取它的地址,而编程过程中,取的都是变量存放在内存中的地址,通过地址可以直接访问到存放在该地址里的数据。
‘叁’ c语言的数组前加&有什么用
&是取地址符,&xx[i][j+1]也就是得到xx[i][j+1]的地址,即它的指针,以便于在该函数中通过参数传递地址的方法,利用形参对原数组的值加以操作。
‘肆’ 二维数组前在取地址符是什么意思
[]是数组的符号,你表示一个数组就可以用。如:a[1],一维数组。b[2][3],二维数组。
是取地址符,加变量就是看这个变量的内存地址在哪儿,一般用16进制表示
‘伍’ c语言中取地址符和*有什么区别
区别如下:
(1)两者根本意义不同。*是指针的意思,而&是去地址的意思,这两个相辅相成。
(2)用法不同。高级的c语言都是动态开辟内存,是使用malloc和free,这时就不用&了,因为取引用都是对于栈上的数据,在数据结构中,都是在堆上开辟数据容量。
(3)语言规则不同,变量类型加*就是一个指向该变量类型的指针,通俗点说,指针就是可以通过地址修改和获取该变量的值,而&符号只是获取该变量的地址!
指针中的“取地址符”
(5)C语言数组前加取址符什么意思扩展阅读:
引用的声明符放置在变量名的前面,和*操作符的用法一样。
引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。ra=1; 等价于 a=1;
声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。
故:对引用求地址,就是对目标变量求地址。&ra与&a相等。
#include<iostream>using namespace std;int main()
{ int m[10]={1,2,3,4,5,6,7,8,9,10}; int (&n)[10]=m; for(int i=0;i<10;i++) cout<<m[i]<<' ' ;
cout<<endl; for( i=0;i<10;i++) cout<<n[i]<<' ' ; cout<<endl; return 0;}
例如:
int*pointer;//建立一个指针
int*&p1=pointer;/*
正确,编译系统把"int*"看成一体,把"&p1"看成一体,即建立指针pointer的引用,就是给指针pointer起别名p1。
int&*p2=pointer;//错误,这就变成了引用的指针。
‘陆’ C语言的数组名可以加取地址符吗例如int a[2],然后输出&a,好像在哪里看见过,但是觉得意义
可以加取地址符,但是a就表示&a[0],没必要。
‘柒’ 如果在字符数组名前加上取地址操作符&,会发生什么(c语言)
数组名称就是地址 在加上取地址 取的是地址的地址 算上双重指针的那种
‘捌’ C语言中 用scanf函数输入字符串数组,取地址符&是不用输的,如果输了取地址符算错么 ,或者含义不一样么
不一样。
C语言的字符串为数组形式,而数组的名称可以表示其地址,故对字符串输入不需要加地址符。而单独的字符、整型变量等的名称不能直接表示地址,故需要加地址符。
数组名就代表了该数组的地址。整个数组是一块连续的内存单元,数组名所代表的地址为第0个元素的地址,c就代表c[0]的地址。
设数组c的首地址为0X2000,也就是说c[0]地址为0X2000,则数组名c就代表这个首地址。因为c已经表示地址,所以在c前面不能再加取地址符&。
字符串数据类型是建模在形式字符串的想法上的数据类型。字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。
(8)C语言数组前加取址符什么意思扩展阅读
为了避免这种情况,可多设几个字符数组分段存放含空格的串。程序可改写如下:
#include<stdio.h>
intmain()
{
charstr1[20],str2[20],str3[20];
printf("Input string: ");
scanf("%s %s %s %s",str1,str2,str3);
printf("Your string: %s %s %s %s ",str1,str2,str3);
}
运行结果:
Input string: C C++ Java
Your string: C C++ Java
‘玖’ c语言中"&取地址"是什么意思
找到变量在内存空间的位置,对变量进行操作时,会找到该处。
‘拾’ c语言编程输入时为什么一维数组要加地址符,字符数组就不用呢
因为字符数组,数组名本身就是指一个地址。
定义了字符型数组char name[10]。name有两个含义:一个是代表着name这个数组第一个位置的地址,也就是name[0]的地址。可以说name就等价于&name[0]。
还有一种意思就是指代name整个数组。&name 就是整个数组的首地址。所以name和&name取得的地址是相同的。
(10)C语言数组前加取址符什么意思扩展阅读
name和&name区别:
不同点在于:name+1表示的是数组第二个元素的地址,而&name+1表示的是整个数组后又一个name数组的首地址,即&name[10]后一个新的name数组的首地址。例如:
#include<stdio.h>
int main(void)
{
char name[10]={"hello csdn"};
printf("name+1的地址:%p ",name+1);
printf("&name+1的地址:%p ",&name+1);
return 0;
}
所以说scanf("%s",name);和scanf("%s",&name);执行后的结果是一样的,都是name的首地址,都是给字符数组name赋值。推荐用 scanf("%s",name); ,第二种不容易理解也容易犯错,有些编译软件也不支持会报错。