C指针基础

任何的数据类型我们都可以把它当成个模子,然后可成各种类型的数据;

任何模子都又其特定的大小。

int *p;

用sizeof测试下,sizeof(p) 或者sizeof(int)是4byte,于是可以这样定义:

一个int类型的模子在内存上刻出大小为4字节的空间,然后把4个字节大小空间命名为p。同时限定这4字节连续空间只能存储某个内存地址,即使你存入别的任何数据,都将被当做地址处理,而且这个内存地址开始的连续4字节上只能存储某个int数据。

我们把p称为指针变量,p里存储的内存地址处的内存称为p指向的内存。

int *p = NULL    and    *p = NULL

第一个是初始化。初始的是什么呢,就是将p本身的地址初始为0.

*p = NULL是将p指向的内容初始为0.

double *p = NULL;
 printf("%d\n",sizeof(p));   //始终是4byte,指针变量本身的空间
 int *pt = NULL;
 printf("%ox\n",pt);  //通过编译器查看pt的值为ox
 int i = 10;
 int *pp = &i;
 printf("%d\n",i);
 *pp = NULL;
 printf("%d",i);  //最后i的值变为0

再看:

int *p;

*p = NULL;

定义了一个指针变量p,但是p本身的地址不为人知,也许就是非法的,作用后续的也可能会报错。

改进:

int i = 20;

int *p = &i;

*p = NULL;

将数值存储到指定的内存地址:

假设将数值0x100存储到地址为0x12ff7c上,那么这个地址可以这样得来,:我可以随意定义个变量,比如int i;然后取地址,那么这个地址肯定是可以访问的。

int *p = (int *)0x12ff7c;

*p = 0x100;

也可以这样:*((int *)0x12ff7c) = 0x100;

时间: 2024-12-13 17:10:48

C指针基础的相关文章

C语言-->(十)指针基础

知识点: 1.指针基础 2.指针和函数(地址传递) ======================================= 指针是C中的一个重要的概念,也是C的一个重要特色.掌握指针的应用,可以使程序简洁.紧凑.高效. 指针的概念比较复杂,使用也比较灵活,因此初学时会常出错,我们要理解每一个概念的本质,多加练习,在实践中掌握它. 程序使用指针和没有没有使用指针的代码是两个档次. ========================================指针基础 [地址概念] 1.生

Boost智能指针-基础篇

简介 内存管理一直是 C++ 一个比较繁琐的问题,而智能指针却可以很好的解决这个问题,在初始化时就已经预定了删除,排解了后顾之忧.1998年修订的第一版C++标准只提供了一种智能指针:std::auto_ptr(现以废弃),它基本上就像是个普通的指针:通过地址来访问一个动态分配的对象.std::auto_ptr之所以被看作是智能指针,是因为它会在析构的时候调用delete操作符来自动释放所包含的对象.当然这要求在初始化的时候,传给它一个由new操作符返回的对象的地址.既然std::auto_pt

二级指针基础知识

/* ============================================================================ Name : TestDoublePointer.c Author : lf Version : Copyright : Your copyright notice Description : 二级指针基础知识 ================================================================

C++中的指针基础

C++ -- 指针 1.指针基础 指针是一个变量,其存储的是值的地址,并不是值本身.要获得一个变量的地址,要通过地址运算符&实现. eg: int a = 4; int *p = &a; 这里指针p就存储了a的内存地址,p指向变量a的地址.指针表示一个变量地址,要想通过指针获取值,需要*运算符,称为间接值或解除引用,将其应用于指针,可以获取该地址存储的值.如*p,*符号后面必须是指针. #include <iostream> using namespace std; int m

C-Xcode真随机数的产生, 指针基础, 小技巧

小技巧1: 输出一个 % 输出一个%号(因为%是格式控制符的符号,所以输出是单独写一个%,系统会默认把%与其后面一个字符相结合当做格式控制符) —— %% 小技巧2: 自动整理代码 整理代码组合键 选中要对齐的代码 control + i 就会自动对齐 前提:代码没有语法错误 小技巧3: 产生一个真随机数 产生一个指定范围内的随机数: 比如需求:产生10-20的随机数 int num = arc4random_uniform(11) + 10 其他类推可得 公式 int num = arc4ra

C语言05指针基础

1 局部变量和全局变量 1.1 问题 分别定义一个局部变量和全局变量,测试生命期限和作用域. 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:局部变量和全局变量 代码如下所示: #include <stdio.h> /*auto*/ int x = 1000; void f1(int a) { a = 10; auto int x = 20; static int y = 30; y++; x++; printf("in f1(),a=%d,x=%d,y=%d\n"

C语言指针基础

C语言指针 前导程序   1 #include<stdio.h> 2 3 4 5 void change(int *); 6 7 int main() 8 9 { 10 11 int a=90; 12 13 change(&a); 14 15 printf("a=%d\n",a); 16 17 return 0; 18 19 } 20 21 22 23 void change(int *n) 24 25 { 26 27 *n=10; 28 29 } 30 31 一.

C语言之指针基础概念

开通博客园以来第一次写随笔,就写一下关于C语言指针的一些感想吧. 很多同学都搞不懂指针,我一开始也云里雾里没看懂指针,而且老师又把指针说得很难的样子.其实主要是把指针”*“的作用给弄混了,不用畏惧,细心点看就可以了. 首先简介一下指针的概念好了.指针本身也是一个变量,只不过这个变量的值比较特殊,它不是常规的整型数或者浮点数,而是指向另一个变量地址的值.通过指针的值可以知道另一个变量的地址以及存在该地址中的具体数值(该数值可以是整型,浮点型,结构体,甚至也可以是一个指针),通过指针得到另一个变量的

指针基础知识

1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int num = 20; 7 int *p = &num; //存储num的地址 8 cout<< num <<endl; 9 cout<< p <<endl; //输出指针存储的地址 10 cout<< *p <<endl; //输出指针地址的值 11 return 0; 12 }

8.30 指针基础概念

指针的兼容性 sizeof的结果是一样的就是兼容的. int *p; unsigned int ui = 10; p = &ui;  //正确 指针相加: 不是以整数的形式增加,而是移动 数组名与指针: 函数应该传数组名 : #include <stdio.h> void func(int *a) { a += 3; *a = 100; } int main() { int a[10] = {1,2,3,4,5,6,7,8,9,0}; int i; func(&a);//这里传