笔记--------指针

//
#include<stdio.h>
int main()
{
int *p,i=2;//int*为整形 类型要一致
p=&i;
int j,*g=&j;//指针是一个数值为内存地址的变量
/*声明int* 是一个指针类型,是一个整形变量的地址,是内存单元的编号;
1首先p保存了i的地址p指向i;
2.p不是i,i也不是p修改p的值不会改变i,修改i也不会改变p,是两个
不同的变量.
3.如果一个指针变量指向了一个普通变量则*指针变量就等同于普通变量.
4.* 为取出p里面存放的地址所指向的地址里面的内容
5.地址就是内存单元的编号 i与p的相互改变不会改变对方的值除非是加了*

 /*
 表示复杂的数据结构
 快速传递数据
 是函数返回一个以上的值
 直接访问内存
 方便的处理字符串
 是理解面向对象引用的基础
 */

/*
指针分类
1基本类型的指针
2指针和数组
3指针和函数
4指针和结构体
5多级指针
*/
/*cpu 处理内存 条三根线 控制 数据 地址
线 内- >c->内*/
/*
32位32根地址总线 2的32次方个字节
地址编号0=4G-1;
指针只能做的四则运算中的减法
*/

}
#include<stdio.h>
int main()
{
int i=5;/* int i;定义 I=5;初始化*/
int *p;
int *q;
p=&i;
/* *q=p */语法错误/* int* 跟int类型不一样 */
/* *q=*p */ q未分配内存地址
/* p=q; */q是一个垃圾值
/* *q=*p */木有分配地址

}

时间: 2024-10-18 06:43:27

笔记--------指针的相关文章

K&amp;R阅读笔记——指针

地址运算符&只能应用于内存中的对象,即变量和数组元素.他不能作用于表达式,常量和register类型的变量. *ip++ 和 (*ip)++的区别,前者将指针ip本身指向下一个元素,而后者将ip指向的内容加1,因为一元运算符*和++,优先级相同,但是结合顺序是自右向左. 对于:int a[10] &a 的类型为int (*)[10],是一位数组,而a的类型为int *类型.所以注意不要搞错. int *p = a;是可以的. int *p = &a[0];也是可以的 &a[

瘋子C语言笔记(指针篇)

指针篇 4.数组a 的性质 int a[3][4] = {{1,3,5,7},{9,11,13,15},{17,19,21,23}} int 型数据在KEIL编译环境下,占2字节内存 表示形式 含义 地址 a 二维数组名,指向一位数组a[0],即0行首地址 设2000 a[0].*(a+0).*a 0行0列元素地址 2000 a+1,&a[1] 1行0列元素地址 2008 a[1].*(a+1) 1行0列元素a[1][0]的地址 2008 a[1]+2.*(a+1)+2.&[1][2] 1

C语言学习笔记--指针阅读技巧

1. 指针阅读技巧:右左法则 (1)从最里层的圆括号中未定义的标示符看起 (2)首先往右看,再往左看 (3)遇到圆括号或方括号时可以确定部分类型,并调转方向 (4)重复 2.3 步骤,直到阅读结束 注意: 当读出是数组时,须读出元素个数.元素类型 当读出是函数是,须读出参数及类型,返回值类型 当读出是指针是,须读出指针所指向的类型,有时也须读出指针的类型. ① int (*p)(int*, int (*f)(int*)); A.读未标示符 f,向右遇”)”括号,调转向左遇*,所以 f 是个指针,

C++笔记--指针和引用

面试一:指针与引用的区别? 答案: (1)非空区别.在任何情况下都不能使用指向空值的引用.因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量.相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用.不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针要高. (2)合法性区别.在使用引用之前不需要测试它的合法性.相反,指针则应该总是被测试,防止其为空. (3)可修改

C语言学习笔记--指针和数组的关系

1.数组的本质 (1)数组是一段连续的内存空间 (2)数组的空间大小:sizeof(array_type)*array_size; (3)数组名可看做指向数组第一个元素的常量指针 (4)数组声明时编译器自动分配一片连续的内存空间 ,而指针声明时只分配了用于容纳地址值的 4 字节空间 2.指针的运算 (1)指针是一种特殊的变量,与整数的运算规则为: p + n == (unsigned int)p + n * sizeof(*p); 当指针 p 指向一个同类型的数组的元素时,p+1 指向当前元素的

C语言学习笔记--指针概念

指针也是一种变量,占有内存空间,用来保存内存地址,在32位系统中指针的占用的内存大小为4个字节 1.*号的意义 (1)在指针声明时,*号表示所声明的变量为指针 (2)在指针使用时,*号表示取指针所指向的内存空间中的值. ①*号类似一把钥匙,通过这把钥匙可以打开内存,读取内存中的值. ②变量 p 保存着变量 i 的内存地址,即 p==&i, *p==i #include <stdio.h> int main() { int i = 0; int* pI; char* pC; float*

[问题笔记][指针相加翻译成汇编右移2位]

问题描述: 创建MMU的转换表,在构建每个表项时,基地址指针加上相对偏移,翻译成汇编,偏移被右移了2位,再加上基地址. 问题分析: vaddr的高12位是段地址相对于基地址的偏移数,MMU在寻址时会根据vaddr高12位的偏移乘以4变成相对地址来找到表项的偏移地址.所以指针翻译成汇编右移2位表示的是乘以4,计算出相对于基地址的偏移地址,而不是偏移数. unsigned long *ttb; unsigned long vaddr; ttb = ttb + (vaddr >> 20); ldr

C/C++学习笔记----指针的理解

指针是C/C++编程中的重要概念之一,也是最容易产生困惑并导致程序出错的问题之一.利用指针编程可以表示各种数据结构,通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯:指针能够灵活的操作内存,合理的操作内存能够使程序更高效. 1.指针的概念 本质上讲指针也是一种变量,普通的变量包含的是实际的数据,而指针变量包含的是内存中的一块地址,这块地址指向某个变量或者函数,指针就是地址.指针是一个指示器,它告诉程序在内存的哪块区域可以找到数据. 2.指针的内容 指针的内容包含4部分

C/C++学习笔记--指针(Pointer)

定义指针 一般类型: type_name  *  var_name; 例如: int _var = 1555; int * _var_addr=&_var; 一般类型数组类:type_name * var_names=new type_name[SIZE]