首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C - 指针的初始化,星号位置

指针的初始化是指将一个变量的地址赋值给指针变量,以便在后续操作中能够直接访问该变量的内存地址。在C语言中,指针的初始化可以通过以下两种方式来实现:

  1. 直接将一个变量的地址赋值给指针变量,例如:
代码语言:c
复制
int num = 10;
int *ptr = #
  1. 使用取地址运算符 &,将一个变量的地址赋值给指针变量,例如:
代码语言:c
复制
int num = 10;
int *ptr = #

无论哪种方式,都需要注意指针变量的初始化,否则可能会出现野指针和内存泄漏等问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C语言指针初始化和赋值

1、指针初始化 指针初始化时,“=”右操作数必须为内存中数据地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。...因为p是指向7所在地址,*p = 7给p所指向内存赋值,p没有赋值,所以p所指向内存位置是随机,没有初始化。...,而0x12345678是int型常量,p是一个指向int型指针,两者类型不同,所以正确方式是:int *p = (int *) 0x12345678 ; 4、指针初始化补充 ANSI C定义了零指针常量概念...ANSI C还定义了一个宏NULL,用来表示空指针常量。大多数C语言实现中NULL是采用后面这种方式定义:#define NULL ((void *)0)。...6、指向指针指针指针初始化第5种方式中提到了用一个指针地址来初始化一个指针。回忆一下上一讲内容:指针是一种变量,它也有自己地址,所以它本身也是可用指针指向对象。

2.2K10

文件指针位置

f = open('指针测试.txt','a+',encoding='utf-8') # 这里会直接创建文件,可查看a,w,r,以及分别加加号‘+’和加b区别 # tell() 显示文件指针 print...(f.tell()) # 更改文件指针位置 seek(偏移量,whence) # 偏移量是数字,距离whence字符数 # whence:0:文件开头 1:当前位置 2:文件结尾 seek(10,0...nccccc\nddddd\n') # f.seek(4,0) f.seek(0, 0) print(f.read()) print('='*10) # aaaaa\r\nbbbbb,这串数字从第五,第六个位置打印后两位是一样...# 本来是光标移动到开始0,打印光标后七个最后一个,和光标移动到第六个,打印后一个是一样 print('-'*10) # 第六个位置是\r,第七个位置是\n,所以读七个不包括\r,会打出来...# windows \r\n \r表示回行首 \n换行 # unix/linux \n # mac \r # 这里指针测试.txt’文件里内容如下: # aaaaa # bbbbb #

1.3K40

【编程基础】C语言指针初始化和赋值

1、指针初始化 指针初始化时,“=”右操作数必须为内存中数据地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。...因为p是指向7所在地址,*p = 7给p所指向内存赋值,p没有赋值,所以p所指向内存位置是随机,没有初始化。...,而0x12345678是int型常量,p是一个指向int型指针,两者类型不同,所以正确方式是:int *p = (int *) 0x12345678 ; 4、指针初始化补充 ANSI C定义了零指针常量概念...ANSI C还定义了一个宏NULL,用来表示空指针常量。大多数C语言实现中NULL是采用后面这种方式定义:#define NULL ((void *)0)。...6、指向指针指针指针初始化第5种方式中提到了用一个指针地址来初始化一个指针。回忆一下上一讲内容:指针是一种变量,它也有自己地址,所以它本身也是可用指针指向对象。

2.6K80

C++使用new来初始化指向类指针

C++使用new来初始化指针 1.ClassName * p = new ClassName; 调用默认构造函数。...C++指针初始化问题 c++中指针是一个很经典用法,但是也是最容易出错,比如定义了一个指针,必须对其进行初始化,不然这个指针指向是一个未知内存地址,后续对其操作时候,会报错。...下面就总结一下c++指针初始化一些方法,以及我自己遇到一些问题以及心得体会。...c++指针初始化一般方法 1.将一个已经在内存中存在变量地址传递给定义指针 这个指针就指向这个变量内存地址(相同数据类型),完成初始化。...自己遇见问题 我在使用结构体指针时候,忘记将结构体指针初始化,导致后面访问结构体成员变量时候出现错误(那种编译没错,执行出错问题),后来将指针使用new初始化解决,还有一点就是,全局变量名称与局部变量名称不要一样

26220

C - 指针C语言指针总结

C语言指针总结 1. 变量 不同类型变量在内存中占据不同字节空间。 内存中存储数据最小基本单位是字节,每一个字节都有一个内存地址,这个地址是一个十六进制数。...下面通过一张图可以更直观理解内存中地址 ? 内存中地址演示图 2. 指针 指针C语言灵魂。指针变量占据8个字节。 变量在内存中存储。 变量值:存储在变量中数据,叫做变量值。...声明时候注意,*位置 建议 int* p这样提醒我们这是一个int*类型指针。...BAD_ACCESS坏地址访问错误,像这样指针我们就叫做野指针。 NULL值 完全等价于0 为了防止野指针产生,建议声明一个指针变量后,最好为其初始化,如果没有变量地址初始化给这个指针变量。...char指针初始化给元素字符串数据是存储在常量区

4.1K81

C++中关于指针初始化和使用NULL理解

1、严禁使用未被初始化指针C++创建指针时候,只分配存储地址内存,并不会分配存储数据内存,所以指针可能指向任何位置。   ...(1)使用解除运算符(*)之前,一定要对指针初始化,否则若声明指针刚好指向程序代码位置会导致一些很隐蔽错误。    (2)未被初始化之前禁止指针之间赋值。...首先看一下百科中一段关于NULL描述: NULL出现是一种约定俗成,事实上它不是C语言中关键字;把一个指针赋值为NULL,通常说法是“将指针悬空”。这样,指针就无法再进行任何数据访问了。...0位置指向是程序起始,对于不同编译器,NULL指针操作结果是不同:有些是不准读写,有些是只读,甚至读写都允许。编译器是人定。...引用网友win_hate在话题“关于NULL不严谨”中的话来说:“如果说有谁不严谨了,那必定是读取0位置程序员,而不是C

2.7K100

C语言 | 指向指针指针

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历是日积月累学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例82:C语言用指向指针指针方法对n个整数排序并输出;要求将排序单独写成一个函数;n个整数在主函数中输入,最后在主函数中输出。...解题思路:读者看着道题时候,首先要观察一下有什么规律,然后指向指针指针在上一道练习题中已经有了铺垫,读者可以联系上一道题去熟练使用指向指针指针。...,&number);//键盘输入 for(i=0;i<number;i++) { pstr[i]=&data[i]; //将第i个整数地址赋予指针数组pstr第i个元素 }

3K32

详解c++指针指针指针引用

展示一下使用指针指针指针引用修改传递给方法指针,以便更好使用它。...(这里说指针指针不是一个二维数组) 为什么需要使用它们 当我们把一个指针做为参数传一个方法时,其实是把指针复本传递给了方法,也可以说传递指针指针值传递。...如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改指针copy而不是指针本身,原来指针还保留着原来 值。...输出是两个2 使用指针指针 展示一下使用指针指针做为参数 void func(int **p) { *p = &m_value; // 也可以根据你需求分配内存 *p...我们看一下 func(int **p)这个方法 p:  是一个指针指针,在这里我们不会去对它做修改,否则会丢失这个指针指向指针地址 *p:  是被指向指针,是一个地址。

1.3K60

C语言 | 指向指针指针排序

在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历是日积月累学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例81:C语言实现用指向指针指针方法对5个字符串排序并输出。...解题思路:读者看着道题时候,首先要知道什么时指针,指向指针指针应该怎么用,一般在开发中不这样用,读者要看明白,这个很锻炼思维。...C语言源代码演示: #include//头文件 #include #define LINEMAX 20 //定义字符串最大长度 int main() {...char **point,*pstr[5],str[5][LINEMAX];//定义变量 for(i=0;i<5;i++) { pstr[i]=str[i]; //将第i个字符串首地址赋予指针数组

1.7K32

C++this指针

大家好,又见面了,我是你们朋友全栈君。 C++this指针 当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。...C++在初始化对象时,每个对象中数据成员都会得到系统分配自己独立存储空间。...this指针特性: 1、this指针类型const(类名const),为右值。 2、this指针本身不占用大小,并不是对象本身一部分,不影响sizeof结果。...5、只有在类非静态成员函数中才可以使用this指针, 其它任何函数都不可以。 6、this指针时刻指向对象 。 7、当this指针指向空时,是不会指向对象。...也就是说,成员函数参数不能与对象成员变量重名,如果一定要重名,就必须用this指针指明。

54520

c专题指针-----数组与指针关联

(譬如int a, b, c, d;)和一次定义一个数组(int a[4]);这两种定义方法相同点是都定义了4个int型变量,而且这4个变量都是独立单个使用;不同点是单独定义时a、b、c、d在内存中地址不一定相连...c):&a就是数组名a取地址,字面意思来看就应该是数组地址。&a不能做左值(&a实质是一个常量,不是变量因此不能赋值,所以自然不能做左值。)...,包含4个int型变量 // 注意数组和指针初始化式子,和平时赋值有不同。...int a[10] = {1, 3, 4, 0}; // 定义同时初始化 int *p = &a; // 定义同时初始化 a[0] = 4; a[1...三、指针、数组与sizeof运算符 1、sizeof错误纠正: sizeof是C语言一个运算符(主要sizeof不是函数,虽然用法很像函数),sizeof作用是用来返回()里面的变量或者数据类型占用内存字节数

1K10

c专题之指针---数组指针指针数组区别

而这三个头痛地方分别是: 1、const修饰指针用法,主要是const它放位置,一改变位置,它表示意思就不一样了:...3、函数指针指针函数区别(下一篇文章会进行详细讲解)。...一、数组指针指针数组区别: 1、从字面意思去理解他两区别: (1)指针数组实质是一个数组,这个数组中存储内容全部是指针变量。...换句通俗的话来讲,指针数组就是指针数组,核心是一个数组,什么样数组呢?装着指针数组。 (2)数组指针实质是一个指针,这个指针指向是一个数组。...也可以换句通俗的话语来理解,数组指针就是数组指针,核心是一个指针,什么样指针呢?指向数组指针

1.6K10

C语言函数传参:指针指针

这是道哥第013篇原创 前言 今天同事问了一个问题:在函数参数中传递指针指针,很常用一个场景,重新梳理一下记录于此,以后如果有类似的问题直接发这篇小总结就可以了。...,然后返回给main函数中pData指针。...到这里就已经看到程序崩溃原因了:虽然给指针p赋值了,但是实参pData中内容一直为空,因此从do_malloc函数返回之后,pData仍然是一个空指针,所以就崩溃了。...在do_malloc函数中,调用系统函数malloc成功之后返回所分配空间首地址,关键是要把这个首地址送给pData指针,也就是说要让pData指针变量中值等于这个堆空间首地址。...执行do_malloc(&pData, 128); 把pData指针地址作为实参进行传递,因为pData本身就是一个指针,加上取地址符&,就是指针指针(二级指针),因此do_malloc函数第一个参数就要定义成

2.1K20

C++】C++ 类中 this 指针用法 ① ( C++ 类中 this 指针引入 | this 指针用法 | 代码示例 )

一、C++ 类中 this 指针 1、C++ 类中 this 指针引入 在 C++ 类中 , this 指针 是一个特殊指针 , 由系统自动生成 , 不需要手动声明定义 , 在类中每个 非静态成员函数..., 因此 this 指针是类内部使用指针 , 使用 this 可以访问 实例对象 中 所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++ 类中...this 指针用法 C++ 类中 this 指针用法 : 使用 this 作为指针 : 在 非静态成员函数 中 , 直接使用 this 作为 本实例对象 指针 ; this 使用 this-> 访问成员变量...访问成员变量 : 在 非静态成员函数 中 , 直接使用如下语法 , 访问 本实例对象 中 非静态成员变量 ; 先获取指针指向数据 然后访问数据中成员变量 ; (*this).成员变量名 在 C++...类中 , 定义了 成员变量 age 和 height , 在 构造函数 中进行初始化 , 可以使用 this-> age 访问 age 成员变量 , 使用 this->height 访问 height

22920

C语言(失效指针

曾经以为,C语言对我来说已经深入骨髓,所有语法细节早已烂熟于胸,直到我遇到了一道笔试题,一道丧心病狂笔试题,才渐渐明白,图样!图森破!哎我还是太年轻。。。...原题代码复杂,记不住,但考核关键语法点嘴脸如下: // 失效指针 int main(void) { void (*p)(); // 定义了一个指针 int a = 100;...我们将源代码稍作修改: // 失效指针 int main(void) { void (*p)(); // 定义了一个指针 int a = 100; p = &a;...将代码再改一下: // 失效指针 int main(void) { void (*p)(); // 定义了一个指针 int a = 100; p = &a; //...让指针p指向了a printf("p: %#x\n", p); // 将指针p存储地址以十六进制输出 printf("*p: %#x\n", *p); // 将指针p目标

70720

C 指针算术运算

C 指针是一个用数值表示地址。因此,您可以对指针执行算术运算。可以对指针进行四种算术运算:++、--、+、-。...假设 ptr 是一个指向地址 1000 整型指针,是一个 32 位整数,让我们对该指针执行下列算术运算: ptr++ 在执行完上述运算之后,ptr 将指向位置 1004,因为 ptr 每增加一次...,它都将指向下一个整数位置,即当前位置往后移 4 字节。...这个运算会在不影响内存位置中实际值情况下,移动指针到下一个内存位置。如果 ptr 指向一个地址为 1000 字符,上面的运算会导致指针指向位置 1001,因为下一个字符位置是在 1001。...我们概括一下: 指针每一次递增,它其实会指向下一个元素存储单元。 指针每一次递减,它都会指向前一个元素存储单元。

59120

C语言: 指针进阶

目录 指针进阶 前言 1. 字符指针 2. 数组指针 3. 指针数组 4. 数组传参和指针传参 5. 函数指针 6. 函数指针数组 7. 指向函数指针数组指针 8....回调函数 ---- 指针进阶 前言 上文简易指针中我们介绍了一些常见简单指针用法 链接:简单指针 这期,咱们来学习进阶版指针用法。 1....而指针str3、指针str4则是指向同一块内存中存放字符串,所以他们是相同。 2. 数组指针 顾名思义,这是一种指针,并且是一种可以指向数组指针。 那么他是哪种形式呢?...看看以下例题分析:  一维数组: 当传入是数组名时候,函数参数无论是数组、指针、还是指针 [ ] 都是可以 当传入指针数组数组名,那么这时候就要用到二级指针了,指向指针地址了。...二维数组: 在用二维数组传参时候,和之前初始化时候一样,列数是一定要给,不然就是错误。 而 int *arr [ ] 错误原因是这是一个指针数组,里面的元素都是指针,所以肯定是错误

58630

谈谈C语言指针

C语言指针是啥? 举个栗子:新学期到了,小明正式开启了自己大学生活,他课表显示,今天上午十点,在教一204教室有一节计算机专业课。小明迫不及待来到教一,但他不知道教一204教室是哪间教室。...这个时候,他在教一门口看见了一个指路牌,上面就写着教一204教室具体位置,于是他直奔教一204教室开始上课。 上述栗子中提到 指路牌 顾名思义,就类似于C语言指针。...指针专业术语: 指针是一种编程语言对象,它是存储位于计算机内存中另一个值内存地址。...②全局变量是在程序开始运行之前初始化阶段就诞生,到整个程序结束退出时候才死亡,始终占用数据段上空间,一定程度上造成了内存浪费。...③在面向对象程序设计中,全局变量初始化顺序不能确定,因编译器不同而不同,在面向对象领域就变成了构造对象顺序不确定,会造成无法预估灾难性后果 参考链接:https://blog.csdn.net

41320
领券