我得到了我想要的輸出,但不知道如何擺脫這些警告。任何幫助表示贊賞。
警告:
格式指定型別 'void *' 但引數型別為 'char' [-Wformat] printf("\n指標變數的值為 %p\n", *myString);
"格式指定型別 'void *' 但引數型別為 'char' [-Wformat] printf("%p\n", myString[x]);
#include <stdio.h> #include <stdlib.h> int main() { char *myString = "Daniel"; int x; printf("\nThe pointer variable's value is %p\n", *myString); printf("\nThe pointer variable points to %s\n", myString); printf("\nThe memory location for each character are: \n"); for (x = 0;x < 7;x ){ printf("%p\n", myString[x]); } return 0; }
輸出:
The pointer variable's value is 0x44
The pointer variable points to Daniel
The memory location for each character are:
0x44
0x61
0x6e
0x69
0x65
0x6c
(nil)
uj5u.com熱心網友回復:
首先,這些電話
printf("\nThe pointer variable's value is %p\n", *myString);
和
printf("%p\n", myString[x]);
沒有意義,因為您試圖將字符的值用作指標值。
至于其他警告,則只需將指標轉換為 type void *。例如
printf("\nThe pointer variable's value is %p\n", ( void * )myString);
printf("\nThe pointer variable points to %s\n", myString);
printf("\nThe memory location for each character are: \n");
for (x = 0;x < 7;x ){
printf("%p\n", ( void * )( myString x ));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/330026.html
下一篇:sprintf的最佳實踐?
