
正文
c语言数组和取地址符,c语言取地址里面的值
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言中int数组为什么不可以不要取地址符,字符数组就可以呢?数组名就是...
因为字符数组,数组名本身就是指一个地址。定义了字符型数组char name[10]。name有两个含义:一个是代表着name这个数组第一个位置的地址,也就是name[0]的地址。可以说name就等价于&name[0]。还有一种意思就是指代name整个数组。&name 就是整个数组的首地址。所以name和&name取得的地址是相同的。
数组名是指向数组第一个元素的指针,所以如果你直接使用数组名的时候是不需要取地址符的。如果你用了下标操作那就需要取地址符,比如:int num[10];直接使用num,那么不用取地址符。
C的语法中有些东西可以在机器的层面上解释,有些要在编译器的层面上解释。a这个数组名就要在编译器的层面上解释,编译器把数组名和数组地址当成一个东西,它与变量名是指变量的值而不是地址不同。没有为什么,编译器就是这么对待数组名的,就像字符串变量名指的就是首字符地址一样,这是个规定。
name是C++ 字符数组的定义。而C/C++在的字符数组 定义应该是 连续的字符元素存储的内存空间的首地址。因此数组名name等效于一个char的内存地址。(实际除去语法定义有一定特殊性外,基本就等同于char*)。按照这个说法,name也就等于&(name[0]),加括号只是为了让你能逻辑上好理解,不加也行。
相关问答
Q1: C语言关于字符串数组取地址的问题。到底要不要&呢?
1、因为对于数组a[10],首地址就是a。这个a表示的就是数组的首地址,所以不用取地址了。
2、这是对于scanf的实现问题了,对于%s输入的是字符串,是一串字符。而%d则输入的仅仅是一个字符。
3、不一样。C语言的字符串为数组形式,而数组的名称可以表示其地址,故对字符串输入不需要加地址符。而单独的字符、整型变量等的名称不能直接表示地址,故需要加地址符。数组名就代表了该数组的地址。整个数组是一块连续的内存单元,数组名所代表的地址为第0个元素的地址,c就代表c[0]的地址。
4、然后再说strcpy函数,因为是字符串的拷贝,所以肯定给出的必须是字符串。但是如果我们不想从函数的开始进行拷贝呢?如果拷贝的位置总在最后就可以用strcat函数,如果是指定的位置就需要取地址了,实际上&b[i]就相当于以b字符串的第i个字符为开始的字符串。
Q2: C语言结构体数组,输出中加取地址符是为什么?
1、因为字符数组,数组名本身就是指一个地址。定义了字符型数组char name[10]。name有两个含义:一个是代表着name这个数组第一个位置的地址,也就是name[0]的地址。可以说name就等价于&name[0]。还有一种意思就是指代name整个数组。&name 就是整个数组的首地址。所以name和&name取得的地址是相同的。
2、数组本身是不用的,因为数组本身就是属于引用类型的,用数组名字代表的是整个数组,而不能代表单个的元素,这几年明显是输入其中一个值得,所以就正常的输入一个特定类型的值,需要用取地址符号。
3、在C语言中数组的名字即数组的起始地址,也是数组第一个元素的地址。因此,假设有一个char类型的数组a表示成如下代码:char a[20];那么a表示字符数组的起始地址,它和&a[0]是一个意思。
4、%c, 输入一个数组元素 加 &:char str[80]; i=0; scanf(%c, &str[i]); 拍入 A, str[i] 获得 字符常量 A (单引号)。你的 &studentnum,studentname,&studentscore 这里成员name 是 char 数组,studentname 已是字符串首地址,不能再加 &。
Q3: C语言中取地址的符号都有哪些???
& 是 取地址的运算符号 int *p; -- 这个 星号 只是声明,表示 p 是指针。p = 123;k = *p + 456;-- 语句里出现 *p 这个形式,不同于声明中的这个形式。(外貌一样,意思不同)这个 *p 相当于 值,不是地址。语句里出现 p 才是地址。
C语言中&有两种作用:按位逻辑与(两个操作数),或者取地址(一个操作数)。例如: 按位逻辑与 char a = 0x32 & 0xf0;0011 0010 & 1111 0000 = 0011 0000 结果a=0x30,也就是字符0。
&符号是指取地址符,是单目运算符。当你定义一个变量a,那想知道变量在内存中的地址,就可以使用这个符号。这个符号就是指取址,在C语言指针这一章中非常常用。&符号是位运算符,表示“按位与”,是双目运算符。&符号还可以表示“按位与”。
Q4: c语言中取地址符是怎么用的?
依照我的理解:& 取地址 就是找到那个分配的内存空间 然后去那块内存里 找我们需要的变量 我这可能是用了oc的解释 因为对c不是很熟悉。&是取地址运算符,&a为变量a的地址。
好难取址符使用在你需要得到对象的地址,操作其指针的时候 ,或者将其赋值。
其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。例如:&a、&b分别表示变量a和变量b的地址。这个地址就是编译系统在内存中给a、b变量分配的地址。
取地址的时候,直接符号&加变量就行了。如&a,&b等。按位与的时候,后面需要跟一个数。
c语言&符号有三种含义:&符号是指取地址符,是单目运算符。当你定义一个变量a,那想知道变量在内存中的地址,就可以使用这个符号。这个符号就是指取址,在C语言指针这一章中非常常用。&符号是位运算符,表示“按位与”,是双目运算符。&符号还可以表示“按位与”。
Q5: C语言中&array[i]为什么相当于array+i?这是一种规定吗?还有,面向对象...
是求模的意思,两边必须是整数类型的,求模常用符号为mod,就是小学学的求余运算符。例如50%23=4,因为余数为4,所以在程序中必须保证两边为整数才是这个意思。类似的还有 +=,-=,*=,/= 等。
C语言中%d表示输入或输出十进制有符号数。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
C语言中的% 2d是printf()函数的输出格式中的%a.bf。表示将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格。如:“%8d ”要求输出宽度为8,而a值为15只有两位故补三个空格。
c语言数组和取地址符的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言取地址里面的值、c语言数组和取地址符的信息别忘了在本站进行查找喔。






