C/C++指针和取地址的方法
先看下面的程序:
void main()
{
int a = 100;
int *ap = &a;
printf("%p\n",&a);//输出:002AF744
printf("%p\n",ap);//输出:002AF744
printf("%d\n",*ap);//输出:100
printf("%p\n",&ap);//输出:002AF738
printf("%p\n",&*ap);//输出:002AF744
scanf("%d");
}
1. printf("%d\n",&a);//输出:002AF744
这一句输出的是变量a的地址,毋庸置疑。
2. printf("%d\n",ap);//输出:002AF744
这一句是输出的指针的值,与的一个输出相同,也就是说指针的值是指针所指向的变量的地址
3. printf("%d\n",*ap);//输出:100
在指针变量的前面加了一个*号,不加星号的ap指针是指向变量a的地址,而加了*真变成了指针ap所指向的变量a的内容,
所以,我们可以理解为*号是获取指针变量所指向的地址所存放的内容的操作。
4. printf("%d\n",&ap);//输出:002AF738
这一句(同1)是取得指针变量ap的地址
5. printf("%d\n",&*ap);//输出:002AF744
这一句根据第3点的分析,*ap指向的是变量a的内容,而&*ap即是获取变量a的内容的地址,即是变量a的地址所以输出内容同(1)
相关推荐
-
C语言 字符串指针详解及示例代码
C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在<C语言字符数组和字符串>中已经进行了详细讲解,这里不妨再来演示一下: #include <stdio.h> int main(){ char str[] = "http://c.biancheng.net"; int len = strlen(str), i; //直接输出字符串 printf("%s\n", str); //每次输出一个字符 for(i=0; i<
-
解析C++中的字符串处理函数和指针
C++字符串处理函数 字符串连接函数 strcat 其函数原型为 strcat(char[],const char[]); strcat是string catenate(字符串连接)的缩写.该函数有两个字符数组的参数,函数的作用是:将第二个字符数组中的字符串连接到前面字符数组的字符串的后面.第二个字符数组被指定为const,以保证该数组中的内容不会在函数调用期间修改.连接后的字符串放在第一个字符数组中,函数调用后得到的函数值,就是第一个字符数组的地址.例如: char str1[30]=″Peo
-
C++中字符串以及数组和指针的互相使用讲解
C++字符串与指针 在C++中可以用3种方法访问一个字符串(在第5章介绍了前两种方法). 用字符数组存放一个字符串 [例]定义一个字符数组并初始化,然后输出其中的字符串. #include <iostream> using namespace std; int main( ) { char str[]="I love CHINA!"; cout<<str<<endl; return 0; } 运行时输出: I love CHINA! 用字符串变量存放
-
C++指向类成员函数的指针详细解析
首先 函数指针是指向一组同类型的函数的指针:而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指针,当然这里的成员函数更准确的讲应该是指非静态的成员函数.前者是直接指向函数地址的,而后者我们从字面上也可以知道 它肯定是跟类和对象有着关系的. 函数指针实例: 复制代码 代码如下: typedef int (*p)(int,int);//定义一个接受两个int型且返回int型变量的函数指针类型int func(int x,int y){ printf("func:x=%d,y=%
-
改变javascript函数内部this指针指向的三种方法
在查了大量的资料后,我总结了下面的三条规则,这三条规则,已经可以解决目前我所遇到的所有问题.规则0:函数本身是一个特殊类型,大多数时候,可以认为是一个变量. 复制代码 代码如下: function a() { alert(this); } 或者 var a = function() { alert(this); } 都可以认为是创建了一个变量,这个变量的值就是一个函数. 规则1:如果一个函数,是某个对象的key 值,那么,this就指向这个对象. 这个规则很好理解: 复制代码 代码如下: var
-
分享C++面试中string类的一种正确写法
具体来说: 能像 int 类型那样定义变量,并且支持赋值.复制. 能用作函数的参数类型及返回类型. 能用作标准库容器的元素类型,即 vector/list/deque 的 value_type.(用作 std::map 的 key_type 是更进一步的要求,本文从略). 换言之,你的 String 能让以下代码编译运行通过,并且没有内存方面的错误. 复制代码 代码如下: void foo(String x) { } void bar(const String& x) { } Strin
-
c++面试题字符串拷贝函数示例
复制代码 代码如下: #include<iostream>using namespace std; //字符串拷贝函数char * sCpy(char *strDest, char *strSource){ _ASSERT((strDest != NULL) && (strSource!=NULL)); char *d = strDest; //获取dest的当前位置 char *s = strSource; /
-
从string类的实现看C++类的四大函数(面试常见)
朋友面试的一道面试题,分享给大家,面试官经常会问到的,实现string类的四大基本函数必掌握. 一个C++类一般至少有四大函数,即构造函数.拷贝构造函数.析构函数和赋值函数,一般系统都会默认.但是往往系统默认的并不是我们所期望的,为此我们就有必要自己创造他们.在创造之前必须了解他们的作用和意义,做到有的放矢才能写出有效的函数. #include <iostream> class CString { friend std::ostream & operator<<(std::
-
深入分析C语言中结构体指针的定义与引用详解
指向结构体类型变量的使用首先让我们定义结构体:struct stu{char name[20];long number;float score[4];} ;再定义指向结构体类型变量的指针变量:struct stu *p1, *p2 ;定义指针变量p 1.p 2,分别指向结构体类型变量.引用形式为:指针变量→成员:[例7-2] 对指向结构体类型变量的正确使用.输入一个结构体类型变量的成员,并输出. 复制代码 代码如下: #include <stdlib.h> /*使用m a l l o c (
-
总结C/C++面试中可能会碰到的字符串指针题
前言 不知道大家有没有这种体会,很多面试题看似简单,却需要深厚的基本功才能给出完美的解答.企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分.读者可从本文看到 strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次.此外,还有一些面试题考查面试者敏捷的思维能力. 分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的
随机推荐
- 基于vue的下拉刷新指令和滚动刷新指令
- python爬虫实战之爬取京东商城实例教程
- 用正则表达式 动态创建/增加css style script 兼容IE firefox
- ASP.NET使用GridView导出Excel实现方法
- C语言 基本语法示例讲解
- Ajax叠加(Ajax返回数据用Ajax发出)示例代码
- 几个Ruby小技巧分享
- 将Session值储存于SQL Server中
- jQuery中bind,live,delegate与one方法的用法及区别解析
- SpringBoot JPA 表关联查询实例
- 微信小程序 POST请求(网络请求)详解及实例代码
- centos6.4+nginx+mysql+php+phpmyadmin整合过程详解
- Java创建文件且写入内容的方法
- Android开发技巧之ViewStub控件惰性装载
- C#远程获取图片文件流的方法
- win7中C#的winForm编程使用savefiledialog不能弹出保存窗体的解决方法
- 23种设计模式(5) java适配器模式
- python交互式图形编程实例(一)
- 基于tomcat的连接数与线程池详解
- 使用node搭建自动发图文微博机器人的方法