指针变量

Power up C++ with the Standard Template Library: Part I[翻译]

隐身守侯 提交于 2020-01-31 12:39:35
Power up C++ with the Standard Template Library: Part I 【原文见: http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=standardTemplateLibrary 】 作者 By DmitryKorolev Topcoder 成员 翻译 农夫三拳@seu Containers Before we begin Vector Pairs Iterators Compiling STL Programs Data manipulation in Vector String Set Map Notice on Map and Set More on algorithms String Streams Summary 也许你已经使用C++作为主要编程语言来解决Topcoder中的问题了,这就意味着你已经在简单的使用 STL了,因为数组和字符串都是以STL对象的方式传入到你的函数中的。也许你已经注意到了,有许多 程序员他们写代码要比你快并且代码也比你的简洁。 也许你不是一个C++程序员,但是因为C++的强大功能以及它的库(或者因为你在Topcoder practice 房间和比赛里面看到的简短的解决方案),你想成为一个这样的程序员。 不管你来自哪里,这篇文章将会帮助你掌握它

C语言开发面试题

六月ゝ 毕业季﹏ 提交于 2020-01-31 11:40:41
 (以下是题主参加的一家偏向Linux平台开发的公司软件岗位笔试题,分享原题,后面附上题主91分的部分参考答案^V^) 一、(8分)请问一下程序输出什么结果? char *getStr(void) {   char p[] = "hellow world";   return p; } void test(void) {   char *str = NULL;   str = getStr();   printf(str); } 二、(5分)test2函数有问题吗,如果有,请支出问题出在什么地方并给出正确答案。 void test2() {   char string[10], str[10];   int i;   for(i = 0; i < 10; i++)   {     str[i] = 'a';   }   strcpy(string, str); } 三、(5分)用预处理指令#define 声明一个常数,用以表明一年中有多少秒。(忽略闰年问题) 四、(5分)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。 五、(8分)你怎么样用C编写死循环呢? 六、(10分)用变量a给出下面的定义: 1、一个整型数; 2、一个指向整型数的指针; 3、一个指向指针的指针,它指向的指针是指向一个整型数; 4、一个有10个整型数的数组; 5、一个有10个指针的数组

C语言趣味题目

江枫思渺然 提交于 2020-01-31 11:39:55
http://sunxiunan.com/?p=1647 在这个网站上 http://stevenkobes.com/ctest.html 发现一套很有趣的C语言测试题,如果你招聘C语言相关开发人员,或者正在学习C语言,很值得参考。 如果没有做,下面内容暂时不要看,最好自己先完成一遍。 —————————————– OK,假设你做的答案没有完全正确,那你可以继续看下去了,否则,后面内容对你来说就是小菜一碟,不值得看。 ——————————————– 第一题: #include <setjmp.h> static jmp_buf buf; int main(void) { volatile int b = 3; if (setjmp(buf) != 0) { printf(“%d\n”, b); exit(0); } b = 5; longjmp(buf, 1); } 输出结果为A)3 B)5 C)0 D)都不是 答案为B,也就是输出5。 关键点在于理解setjmp以及longjmp,( http://en.wikipedia.org/wiki/Setjmp.h )第一次运行到setjmp,会设置jmp_buf,然后返回0。当调用longjmp时,会把longjmp里面的非0值作为setjmp的返回值返回(如果longjmp的value参数为0,setjmp恢复后返回1

C语言函数指针的用法

丶灬走出姿态 提交于 2020-01-31 06:01:28
这篇文章简单的叙述一下函数指针在结构体中的应用,为后面的一系列文章打下基础 本文地址: http://www.cnblogs.com/archimedes/p/function-pointer-in-c-struct.html ,转载请注明源地址。 引言 指针是C语言的重要组成部分, 于是深入理解指针并且高效地使用指针可以使程序员写出更加老练的程序。我们要记住指针是一个指向内存地址的变量。指针可以引用如int、char……常见的数据类型,例如: int * intptr; // 声明一个指向整型值的指针 int intval = 5 ; // 定义一个整型变量 intptr = & intval ; // intptr现在包含intval的地址 指针不仅仅指向常规的类型还可以指向函数 函数指针 函数指针的内容不难理解,不再赘述,参见《 C语言函数指针的用法 》 语法 要声明一个函数指针,使用下面的语法: Return Type ( * function pointer's variable name ) ( parameters ) 例如声明一个名为func的函数指针,接收两个整型参数并且返回一个整型值 int (*func)(int a , int b ) ; 可以方便的使用类型定义运用于函数指针: typedef int (*func)(int a , int b ) ;

c++:智能指针shared_ptr

好久不见. 提交于 2020-01-31 05:44:54
先前的文章我们讲过了智能指针的概念等一系列问题,下面我们直接来看智能指针 1.带有引用计数的智能指针 (Shared_ptr)同时也是强智能指针 所谓的引用计数,就是有多少个智能指针对象管理这个堆内存。引用计数的作用是做所有对象共享的。 不可以写为普通的成员变量,要写成静态的成员变量 我们用一个引用计数管理器来实现Shared_ptr智能指针: 设计思路: 将引用计数管理器设计为数组,用地址和引用计数来当作节点记录堆内存,因为对地址只做一个简单的计数管理,所以用void*,引用计数用int,在智能指针类中,给出一个私有的成员变量mptr,一个静态的成员变量(引用计数管理器)static RefManage。给定一个对象rm。 但智能指针与引用计数管理器属于两种不同的类,为了实现它们之间的信息交互就要调用对方的接口。在引用计数管理器中预留一些接口(下面会给出接口的类型),注意堆上的操作都在智能指针类,通过下面的几个接口可以来进行对 智能指针类的操作,智能指针类中成员变量,静态变量已经设置好。智能指针类构造函数中,引用计数初值都是零,现在 添加 一个引用计数,现在生成一个sp1对象,要调用构造函数对sp1进行初始化,将mptr传给地址域,mptr地址为0x100,通过 getRef()接口传递到引用计数管理器类中,要将0x100与地址域中的数据做比较,如查到与0x100相等的数据

Data Structure ---SinglyLinkedList

喜你入骨 提交于 2020-01-31 05:44:03
# include <stdio.h> # include <stdlib.h> //exit的头文件 # define OVERFLOW -2 # define OK 1 # define ERROR 0 # define TRUE 1 # define FALSE 0 typedef int ElemType ; typedef struct LNode { ElemType data ; struct LNode * next ; } LNode ; typedef struct LNode * LinkList ; typedef int Status ; //在调用函数前指针为空,在函数中为指针分配了新结点,而不是原来的结点,此时只能采用&引用或者指向指针的形式,LinkList &L,LinkList *L; //在调用函数前指针不为空,在函数中对结点进行插入和删除操作,则可以采用引用传递或者指针传递,LinkList &L,LinkList L; Status InitList ( LinkList * L ) //这里传递的参数是LinkList *L,是双重指针,应该理解为指向指针的指针,而不是理解为结点LNode,把指针的地址传过来了,对*L进行修改的话,也就对地址中的内容做了修改,也就对传进来的参数做了修改;这个地方不是LinkList L

(超级棒)多级指针的使用【指针的总结②】

旧巷老猫 提交于 2020-01-31 04:10:15
(超级棒)C++基础·笔记——多级指针的使用【指针的总结②】 ~QQ:3020889729 ~小蔡 一级指针的复习 声明方式 一级指针的理解 二级指针的理解 声明方式 二级指针的认识(理解) 二级指针的操作 多级指针的拓展 总结 指针的个人理解:(打个比方,去指定的位置取东西) ~QQ:3020889729 ~小蔡 一级指针的复习 声明方式 方式: 数据类型* 变量名 = 地址 ; (Example:int* p = &a;) #include "iostream" using namespace std; int main() { int a = 0;//初始化为0 int* p = &a;//指针声明,务必初始化地址 //也可以这样:int* p = NULL; p = &a; *p = 8;//修改地址上的数据 cout << "a = " << a << endl;//输出此时a的值 cout << "*p = " << *p << endl;//输出指针p的值 return 0; } 一级指针的理解 一级指针可以理解是 某一个地址的操作符 ——可以对该地址上的内容(数据)进行修改。 二级指针的理解 声明方式 方式:数据类型** 变量名 = 指针的地址/地址的地址;(Example:int* q = &a; int** p = &q; ) #include

C博客作业--指针

跟風遠走 提交于 2020-01-31 02:08:53
一、PTA实验作业 题目1:6-9 求子串在母串中最后一次出现的地址 1. 本题PTA提交列表 2. 设计思路 定义i,j存放循环变量,n存放子串长度 定义指针p存放子串最后一次出现的地址 for i=0 to t[i]=0 令n=i for i=0 to s[i]=0 for j=0 to t[j]=s[i] 如果t[j+1]=0,p=s[i-n+1]的地址,即子串第一个字符在母串地址 并flag=1表示程序进过这个循环 如果flag=0,p=NULL 返回p 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明 本题无误 题目2:6-8 使用函数实现字符串部分复制 1. 本题PTA提交列表 2.设计思路 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明 部分错误:在想问题时,对数组下标的把握错误,导致失误 题目3:6-11 报数 1. 本题PTA提交列表 2. 设计思路 ``` 定义变量i,k存放总人数,l存放排位数 定义数组a[100] for i=1 to i>=n a[i]=i(让数组每个元素等于他的下标) end for i=1 to n=0 若i>k,i=i-k(将i转化为小于总人数的数字) 若a[i-1]=-1 l--,跳过下面步骤 若l是m的倍数,out[i-1]=j;j++;a[i-1]=-1(将该数组标记为已退出);n--; end ·

C博客作业--指针

跟風遠走 提交于 2020-01-31 01:15:57
一、PTA实验作业 题目1:题目名称6-6 输出月份英文名 1. 本题PTA提交列表 2. 设计思路 switch(n) 如果n为1,返回"January"; 如果n为2,返回"February"; 如果n为3,返回 "March"; 如果n为4,返回 "April"; 如果n为5,返回 "May"; 如果n为6,返回 "June"; 如果n为7,返回"July"; 如果n为8,返回"August"; 如果n为9,返回 "September"; 如果n为10,返回 "October"; 如果n为11,返回 "November"; 如果n为12,返回 "December"; 否则返回 NULL; 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明 这道题没有问题。 题目2:6-8 使用函数实现字符串部分复制 1. 本题PTA提交列表 2. 设计思路 * 定义变量i为0 * gets(s) * t从t+m-1开始直到*t,t++ s[i++]等于*t; end * s[i]等于0 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明 本题没有问题 题目3:6-11 报数 1. 本题PTA提交列表 2. 设计思路 定义变量i,j,s,count与数组a[10001] i从0开始,直到i小于n,i++ 将i+1赋予a for用于外层循环 i从0开始直到i小于n;i++

c primer plus 第10章 数组和指针 笔记要点

五迷三道 提交于 2020-01-31 00:44:34
使用const前缀声明数组,可以把数组设置为只读,以便保护数据。 例如: const int powers[3] = {1,2,4}; int sum( const int ar[] , int n); 初始化数组时可以省略方括号里的数字,编译器会根据初始化列表中的项数来确定数组大小。 int powers [] = {1,2,4}; 通过 sizeof days/ sizeof days[0] 可得元素个数 C99 可以初始化指定的数组元素: int arr[6] { [5] = 212 } 使用指针形参 int sump(* int start , * int end ) { {…} while(start < end) {…} } 使用指针时,尽量在声明时进行 初始化 ,防止出现 int *pt; *pt = 5; C99 变长数组(VLA)使用变量表示数组的维度: int q = 4 ; int r = 5; double sales [q][r] ; 声明: 仅用作个人复习 源自博客 一只大鸽子 原文链接:https://blog.csdn.net/qq_41068877/article/details/88163850 来源: CSDN 作者: Chilliming 链接: https://blog.csdn.net/qq_39994598/article