指针给指针赋值 c语言,指针给指针赋值 c语言
kodinid
7
大家好,今天小编关注到一个比较有意思的话题,就是关于指针给指针赋值 c语言的问题,于是小编就整理了4个相关介绍指针给指针赋值 c语言的解答,让我们一起看看吧。
- c语言只能给指针赋值null和什么?
- c语言为什么字符串赋值给指针是常量?
- C语言中怎么给一个结构体用scanf进行赋值?
- (C语言)地址为什么要变成指针才能赋值给指针变量呢?
c语言只能给指针赋值null和什么?
在C语言中,指针可以被赋值为NULL,这是为了表示该指针不指向任何有效的地址。除此之外,指针还可以被赋值为其他有效的内存地址,例如通过malloc或calloc函数分配的内存地址,或者数组元素的地址等。因此,除了NULL,C语言中的指针还可以被赋值为其他有效的内存地址。
c语言为什么字符串赋值给指针是常量?
在C语言中,字符串字面量(如"hello world")被视为常量。当字符串字面量赋值给指针时,指针指向的是字符串字面量在内存中的地址,而这个地址是常量,不可被修改。因此,将字符串赋值给指针会使指针成为指向常量的指针,即不能通过指针修改字符串的内容。若需要修改字符串内容,应使用字符数组而非指向常量的指针。
结构体数组指针作为函数参数,通过数组的首地址与偏移量对结构体数组进行scanf的赋值,在函数中通过指针间接访问到其指向的内存。举例:编写函数,输入5个学号(int),5个姓名(字符串),5个成绩数组(每组三个成绩)(int[3]),依次调用函数#include
(C语言)地址为什么要变成指针才能赋值给指针变量呢?
地址是门牌号。
指针是登记本上的门牌号。
(图片来源网络,侵删)
房子早就盖好了,门牌号是固定的。
登记本是管理用的,随时可填写修改。
你住宾馆,你的名字就是变量名,你本人就是变量值,房间号就是地址,户型就是变量类型,客户登记本就是内存管理,你就在某一条内容上。
这么简单普通的问题一直被问,是教材问题还是老师问题?!
在c语言中,先定义变量,才能再赋值使用。指针变量也是数据类型,所以要先定义,再使用。在数据类型中,唯有指针变量是存放地址的。在使用指针变量时,也必须先定义再使用,而不同数据类型存放的地址变量也不同。所以才有int *p这样的写法。它的含义就是p是存放数据类型是整型的变量的地址的。其它类型的变量地址不能放在p中。普通变量定义时没有指明地址,要获取它的地址必须用&符号,即&a,表示获取变量a的地址。这样才能把a的地址赋予指针变量,即int a,int *p,p=&a.因此,没有前面的指针变量的定义,是不能有后面的p=&a这个结果的。
地址在C语言里面的存储也需要一个数据类型,如果只是存储内容的话,十六进制int是满足要求的,可以存储一个32位数。但是对于编译器而言,如果它的类型是int,那么它就是一个数字,而只有指针类型才表示变量存储内容是一个地址。
这个规定是编译器决定的,否则的话地址和一个32位数(64位系统上为64位数)没有任何区别。
- 指针是用于存储内存地址的一种变量;
- 可以直接把地址赋值给指针,如:
int * ptr = (int *)1234;
前提是地址明确且不变,否则非常危险,极易导致越界访问,除非你有充足的理由这么做;
- 取变量地址赋值给指针也是一个意思,因为变量地址在运行时才能确定,所以取变量地址是动态的且安全的;
指针即地址。所以您的问题问的不对。
我所理解的应该是想问为什么变量需要取地址以后再赋值给指针变量,即int a,*p; p=&a;
先讲个小概念,数字23,在“今年我23岁了”这句话中23的语义是年龄;在“我的偶像身穿23号篮球服”这句话中23是篮球服的编号。也就是说数字23在不同的语句中语义不一样。
回归正题,int a,*p; p=&a; 在这里我们定义了两个整形变量,在内存中他们都存放的是二进制编码,但是他们的语义是不一样的,一个用来存放整数,一个却是用来存放指向一个整形变量的指针(指针即地址)。简单说这两个变量可不一样,一个是普通变量存放常用的数值,一个是特殊变量(所以还要加个*号区分一下)存放另外一个变量的物理地址。
这么讲您能明白嘛?不明白的话可以再邀请我回答这个问题。
到此,以上就是小编对于指针给指针赋值 c语言的问题就介绍到这了,希望介绍关于指针给指针赋值 c语言的4点解答对大家有用。
标签: 指针
赋值
变量
版权声明:本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。