![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程语言
录事参军
认真、努力、自强不息
展开
-
指针的初始化
1、指针的含义 在我前面的文章《指针一》中我说明了,我们使用指针的直接目的就是将一个地址存放在指针变量中,然后通过访问指针中存放的地址来间接的访问数据;所以指针一定要存放某个地址,即指针一定要指向某段存储空间,当然你可能会说指针指向存储空间不大正确,指针指向的其实是存储空间当中的数据等等;但是,我要说,根据指针的用法,与其说指针是指向某个数据,不如说指针是指向某段存储空间,更确切的说是原创 2012-12-13 14:48:19 · 2198 阅读 · 1 评论 -
指针
一、指针相关 指针我从三个方面去理解指针,如下所示:(1)总所周知,指针中存放的是一个地址,这个地址存放的数据就是指针指向的数据,同时,指针本身也需要存放在一个地址,当然我们一般不关心这个地址,但是需要知道这个地址就是指针本身的地址,这个和指针存放的地址不同,要注意区分;(2)指针指向的数据是有确定类型的,指针本身也是有确定类型的,那么指针指向的数据类型和指针本身的数据类型是不同原创 2012-12-10 17:07:17 · 1873 阅读 · 0 评论 -
一些C语言题目
*************************************************************以下转自酷壳 - CoolShell.cn*************************************************************1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?转载 2013-05-30 16:49:44 · 1513 阅读 · 0 评论 -
一些C语言题目(二)
1、一个fork()面试题原题出自 陈皓 酷壳网 http://coolshell.cn/articles/7965.html1234567891011121314#include #include #inclu转载 2013-08-14 16:50:06 · 821 阅读 · 0 评论 -
while((*++ptr > '0' ) && (*++ptr <= '9' ) )的错误
while((*++ptr > '0' ) && (*++ptr {、、、、、、、、、、、}或者while((*ptr++ > '0' ) && (*ptr++ {、、、、、、、、}估计这是个容易忽略的错误,特此铭记。原创 2013-08-29 11:07:49 · 1270 阅读 · 0 评论 -
error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2
解决办法1、可能是release模式下引用了debug模式下生成的库,所以工程的模式和库的模式要保持一致2、可能是库的编译选项和工程的编译选项不同,例如都使用相同的运行模式(属性--->C/C++------>代码生成)即多线程调试MTD原创 2014-03-05 10:25:12 · 10464 阅读 · 2 评论 -
error: expected ‘)’ before ‘PRId64’
error: expected ‘)’ before ‘PRId64’原来这个宏定义给c用的,C++要用它,就要定义一个__STDC_FORMAT_MACROS宏显示打开它。c++使用PRID64,需要两步:包含头文件:定义宏:__STDC_FORMAT_MACROS,可以通过编译时加-D__STDC_FORMAT_MACROS,或者在包含文件之前定义这个宏。原创 2014-02-13 11:52:07 · 8368 阅读 · 0 评论 -
undefined reference to `pthread_create'
在学习《linux程序设计》时,在编译第一个多线程程序时,遇到错误:/tmp/ccIgFrNf.o: In function `main':thread1.c:(.text+0x29): undefined reference to `pthread_create'thread1.c:(.text+0x6c): undefined reference to `pthread_join'原创 2013-08-02 16:48:05 · 1337 阅读 · 0 评论 -
几个指针变量的含义
先定义几个指针变量:int *pt;int arr[10];int *parr[10];int (*arrp)[10];int ar[5][10];int **ptr;(1)pt是指向整型变量的指针变量int a;pt = &a;这是对pt进行初始化,没有初始化的pt不能使用,否则是不合法的;pt就是存放a的地址,pt指向的类型是int型,pt本原创 2013-05-16 15:40:51 · 1597 阅读 · 0 评论 -
《C++程序设计语言》读书笔记
第一章 致读者1、给C程序员的建议(1)在C++里几乎不需要用宏。用const 或enum定义明显的向量,用inline避免函数调用的额外开销,用template去刻画一族函数或者类型,用namespace去避免名字冲突。(2)不要再你需要变量之间去声明它,以保证你能立即对它初始化。在语句能够出现的所有位置,声明都可以出现,可以出现在for语句的初始化部分,也可以出现在条件中。原创 2013-06-16 23:35:02 · 2445 阅读 · 0 评论 -
结构体变量的初始化
在看FFMPEG的源码时,进入main()函数的第一句程序就是:03149 int main(int argc, char **argv)03150 {03151 OptionsContext o = { 0 };这里涉及到结构体变量的初始化,结构体变量的初始化方式很多,这里是其中一种。OptionContext是一个结构体,其定义为下面:00073 typed原创 2012-12-10 11:59:24 · 4359 阅读 · 1 评论 -
const总结
1、const是C语言的一个关键字,它限定一个变量不允许被改变,尽管不可更改,但是它依然是变量,不是常量;使用const在一定程度上可以提高程序的安全性和可靠性。2、当const和指针变量联合使用时,要分清楚,是对指针变量本身限定,还是对指针变量指向的数据限定:(1)对指针变量本身限定: int a = 3, b = 4; int * co原创 2013-03-27 15:49:26 · 807 阅读 · 0 评论 -
<C 和指针>学习笔记
C 和指针 >一、快速上手1、要从逻辑上删除一段C代码,最好的办法是使用#if指令,即:#if 0statements#endif在#if和#endif之间的程序段就可以有效的从程序中删除,即使这段代码之间原先存在注释也无妨。2、如果有一些声明用于不同的源文件,可以再单独的文件中编写这些声明,然后使用#include指令把这个文件包含到需要使用这些声明原创 2013-02-01 22:42:32 · 2732 阅读 · 0 评论 -
《C Primer Plus》学习笔记
学习书籍《C Primer Plus》一、作用域:变量起作用的范围;分为:代码块作用域、函数原型作用域、文件作用域代码块作用域:代码块是指包含在开始花括号和对应花括号之内的一段代码或者是一个函数内的任一复合语句;在代码块中定义的变量具有代码块作用域,从该变量定义开始至包含该定义的代码块结束,该变量均起作用。可以什么时候使用什么时候定义。函数原型作用域:适用于函数原型原创 2012-12-26 12:47:26 · 5534 阅读 · 0 评论 -
为什么必须将二维数组数组名赋予数组指针(行指针)而不能赋给指针数组或者二级指针?
二维数组:int a[5][4];行指针:int (*p)[4];指针数组:int *pt[5];二级指针:int **ptr;现在开始分析一下:二维数组名为a,而二维数组名的实际含义是什么:a实际是二维数组第一行的首地址,为什么呢,现在来看:a = &(*(a + 0)) = &(a[0])= &a[0],这样看就明显了,也就是说a并不是二维数组的首地址,而是二原创 2013-05-05 21:54:22 · 3319 阅读 · 1 评论 -
<C专家编程>读书笔记
一、序 应该是每位程序员的第二本学习的C语言的书;但是确实我第五本;1、几个问题:这五个问题,我只明白三个,有一个是模糊,一个是不懂,希望看完本书我能都明白;2、为了避免在需要进行比较时误用赋值符号,最好在比较式中先写常数,如:if(3 == i)这样,如果不小心误用了赋值符号,编译器就会发出“原创 2013-03-26 21:58:20 · 1798 阅读 · 0 评论 -
char a[]为什么不能声明为extern char *a
每个符号的地址在编译时可知,即编译器符号表将每个符号的地址存储起来;(1)对于基本类型的变量,例如,int a;char ch;long int b;unsigned int c、、、等,在符号表中存放的实际是这些变量的地址,即&a,&ch,&b,&c,所以在引用这些变量时,直接从这些地址中取出变量即可;(2)对于数组int a[100]来说,编译器符号表中存放的就是数组a[100]所有单原创 2013-05-03 18:01:59 · 1121 阅读 · 0 评论 -
<C缺陷和陷阱>读书笔记
1、=不同于==在进行条件判断时:(1)如果出现if(a == 5)最好写成if(5 == a),因为根据常数不可赋值的性质,如果此时将==写成=,编译器会报错,但是如果按照a==5形式来写,如果将==写成=,编译器不会报错,这样就会永远成立,而且出现错误不易检查;(2)如果出现if(a==0)或者if(a!=0)时,最好写成if(!a)或者if(a),这样不用出现错误。原创 2013-03-26 21:59:52 · 769 阅读 · 0 评论