c语言指针地址
① c语言中指针就是地址,那&运算符也是地址,这话说的对吗
对!
严格说起来,应该这么讲:指针存的是地址,而&运算符是取变量的地址。
指针原理是这样的:其实计算机中的内存就像一个个抽屉(一兆内存就相当于1百万个抽屉),每个抽屉都有一个编号,用于存放数据。
为了方便使用,编译器允许我们在写程序的时候,对抽屉进行命名(而不是使用抽屉的编号),这就是变量名。就比如说我们在程序中定义:char C; 这个时候系统会帮我们找一个空闲的抽屉(比方说编号为981的抽屉),命名为C,用于存放一个字符变量。以后我们在程序里只要使用C这个变量,系统就知道是要对981这个抽屉里的数据进行操作。
而指针是什么呢?指针是我们申请一个空抽屉,里面不放数据,而放编号。比如我们申请一个字符指针:char *ch=&C; 这个时候,ch里面放的是C这个变量的地址(也就是981),其中&是取址符,也就是取C这个变量的地址,而不是值。*ch才是ch指向的值。
② c语言怎么输出指针地址
比如说一个int a,想要输出a的地,对a 直接取地址就行&a
如果有一个int型的指针int* a,则a本身就是地址,而*a表示在该地址下存储的内容
③ C语言关于指针的问题,指针的地址
printf("%s\n",p);为打印字符串,传的是字符串的地址,p就是一个指向这个字符串地址,所以没什么问题。
若你要打印这个物理地址,直接printf("%d\n",p);就可以拉,你加个*,就是取这个地址的值了,所以printf("%d\n",*p); 等于97(即ASCII码的 a 的值),printf("%d\n",*(p+1)); 等于98(即ASCII码的 b 的值)
④ C语言指针指定地址
首先,不能这样做,你c语言操作的地址并不是真实的地址,是操作系统从内存的某一段虚拟给你的地址,每次都不一样,每个程序所使用的内存互不干扰。
第二,而你的程序退出后,所拥有的空间就被系统全部回收了。也就不存在了。否则,你c语言乱改一通,要是改到系统正在用的内存,系统不就出现异常了吗。内存并不是由你管理的,而是操作系统管理的。
假设 a程序的 p指针,指向 0xaaa地址 ,你修改 b程序的 p指针,指向0xaaa,也是无法修改的,每个程序的内存都是系统虚拟的。保证程序可以安全稳定的执行。
⑤ C语言中,指针指向的地址.那个地址是什么地址
那个地址 是被指向的变量的地址。
当指针刚声明完毕时,它并无指向的地址,只有当指针与 某有存储地址的变量发生联系时,才有指向地址。
例如:
int *p; // 这时 p 没有指向地址
int a=3,b=14;
p = &a; 这时 p 指向了 变量 a 的地址了.
// 数值 *p 等于 a 里存放的数值。 printf("%d", *p); 得 3。
这时,若 a = a+1; 输出 printf("%d", *p); 得 4。
p = &b; p 指向了 变量 b的地址 了,输出 printf("%d", *p); 得 14 啦。
⑥ C语言指针 地址
虚拟地址
不同系统在为每个进程分配的虚拟内存有所不同,Linux下是为每个进程理论上分配4G的空间,
可以看到数据段并不是从0开始的,函数的局部变量是存放在栈段区域的,由系统分配
这里涉及到操作系统的内存管理和进程管理方面的只是,比较复杂,我也说的不清楚,不知道能不能回答你的疑问?
⑦ C语言里面的地址是什么意思,指针指向一个变量的地址
C语言里面的地址实际上就是一个内存单元的编号,计算机一般是以一个字节为最小的存储单元的,每个字节就给它编一个编号,这个编号就是这个字节的地址,这个编号也就是地址是具有唯一性的。指针指向一个变量的地址,这个类似于,通过知道房间号就可以确定这个房间的具体位置是一样的道理,这个房间编号就是房间的地址。
⑧ C语言中的 指针 和 地址的关系
指针保存了某个变量的地址
而指针本身其实也是一个变量,它也有自身的地址,
而指针的内容是某个变量的地址
内存是有地址的,就像每个具体的地方都对应了唯一一个地址一样
比如我在一张纸上写了某个地方的地址
这张纸不等于地址,但是通过这张纸,你可以找到这个地方