argc = arguments count
argv = arguments values
argc是int型,argv是字串char/char*型別,在使用argv[1]等值時,需要注意它們不是qstring型別的值。
需要轉換qstring(argv[1])或者qlatinlstring(argv[1]),然後再使用,比如與"a"比較。
注意例項:{
// if(qlatin1string(argv[1]) == "a")
if(argv[1] == "a")
{qdebug()<<"this is label 1"<
當使用if(argv[1] == "a"),輸出為:
this is label 2
equal
當使用if(qlatin1string(argv[1]) == "a"),輸出為:
this is label 1
equal
請問為什麼兩個if語句結果不同,而qlatin1string(argv[1]) 和argv[1]卻是equal ?
將qlatinlstring換成qstring結果也一樣。
問題原因:
char* a,*b
a==b是對a,b指標進行比較,不是對於a,b指標的內容進行比較
如果需要比較a,b指向的內容可以使用strcmp(a,b)
qlatin1string(a)會返回乙個qstring的型別
qstring是過載了opeartor==操作的,
qstring str,char* a
str==a實際上是比較str和a的內容
所以:if(qlatin1string(argv[1]) == "a")其實就是乙個qstring和乙個char*進行比較,這個時候比較的就是實際內容
if(argv[1] == "a")這個時候其實就是兩個char*進行比較,比較的是char*的值,這兩個值肯定是不一樣的
if(qlatin1string(argv[1]) == argv[1])這個也是乙個qstring和乙個char*進行比較,所以比較的是字串內容。
當用if
(!strcmp
(argv[1
],"a"
))時就可以了。
main函式的引數
c程式最大的特點就是所有的程式都是用函式來裝配的。main 稱之為主函式,是所有程 序執行的入口。其餘函式分為有參或無參兩種,均由main 函式或其它一般函式呼叫,若呼叫 的是有參函式,則引數在呼叫時傳遞。main f1 int a,int b f2 int m,int n 在前面課程的學習中,對m...
main函式的引數
main函式可以不帶引數,也可以帶引數,這個引數可以認為是 main函式的形式引數。c語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv c語言還規定argc 第乙個形參 必須是整型變數,argv 第二個形參 ...
main函式的引數
main函式可以不帶引數,也可以帶引數,這個引數可以認為是 main函式的形式引數。c語言規定main函式的引數只能有兩個,習慣上這兩個引數寫為argc和argv。因此,main函式的函式頭可寫為 main argc,argv c語言還規定argc 第乙個形參 必須是整型變數,argv 第二個形參 ...