能力值:
(RANK:648 )
|
-
-
2 楼
GetModuleFileName(NULL, tInitPath, MAX_PATH); 拿到的地址类似于 C:\demo.exe 这样,char* pos = tInitPath + strlen(tInitPath); 作用是将指针指向最后一个字符e ,然后指针向前移动,一直移动到\ 字符,再将\ 字符后面的数据修改为0 也就是截断字符串,使其成为C:\ ,最后再拼接上settings.ini
最后于 2018-3-9 17:42
被KevinsBobo编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
KevinsBobo
`GetModuleFileName(NULL, tInitPath, MAX_PATH);`拿到的地址类似于 `C:\demo.exe`这样,`char* pos = tInitPath + str ...
执行过程是这样,,,可是 char* pos = tInitPath + strlen(tInitPath); 怎么就能将指针移动到最后一个字符呢?
|
能力值:
( LV7,RANK:140 )
|
-
-
4 楼
KevinsBobo
`GetModuleFileName(NULL, tInitPath, MAX_PATH);`拿到的地址类似于 `C:\demo.exe`这样,`char* pos = tInitPath + str ...
纠结一下:并不是移动到最后一个字符e,而是e后面的\0
|
能力值:
(RANK:648 )
|
-
-
5 楼
yeyeshun
纠结一下:并不是移动到最后一个字符e,而是e后面的\0
感谢指正
|
能力值:
(RANK:648 )
|
-
-
6 楼
taizhong
执行过程是这样,,,可是
char* pos = tInitPath + strlen(tInitPath);
怎么就能将指针移动到最后一个字符呢?
[em_2]
这个。。。还是建议楼主看书吧,毕竟这些基础知识不是一两句话能讲完的
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
多看书,,,,
|
能力值:
(RANK:648 )
|
-
-
8 楼
taizhong
多看书,,,,
因为这是指针的问题,为什么一个指针加上一个数字长度就可以往后移,是因为指针指向的是内存的位置,所以给当前位置加上一个长度就到了下一个位置了。但指针移动相关的知识点不止这些,还有指针的类型、指针之间只能相减不能相加等等,所以才建议楼主去看书,系统的了解一下,后面遇到其它问题就不会浪费时间在语法上面了
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
KevinsBobo
因为这是指针的问题,为什么一个指针加上一个数字长度就可以往后移,是因为指针指向的是内存的位置,所以给当前位置加上一个长度就到了下一个位置了。但指针移动相关的知识点不止这些,还有指针的类型、指针之间只能 ...
谢谢,,,基础知识太差了
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
strlen 是求长度,不带最后的0结束位置。就是指向e
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
obiter
strlen 是求长度,不带最后的0结束位置。就是指向e
strlen (C语言函数) 编辑 strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0') //========== strlen确实是字符串的长度, 不过,char* pos = tInitPath + strlen(tInitPath)这句中,tlniPath应该指向的是字符串的第一个字符,加上长度,指向了 0 反汇编窗口也是 指向 0
|
能力值:
( LV3,RANK:30 )
|
-
-
12 楼
楼上都把我想说的都说了,留个标记吧。。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
DWORD GetModuleFileName( HMODULE hModule, // handle to module LPTSTR lpFilename, // file name of module DWORD nSize // size of buffer); tlnitPath 是一个字符串类型的指针,指向的字符串,它也有地址 char类型计算时,取出这个指针地址保存的4字节ASCII码,以int型参与运算 ,即字符串的首地址参与运算
|
|
|