[問題] 字串指標問題...
看板C_and_CPP (C/C++)作者tokyobabylon (paris)時間16年前 (2009/12/31 18:22)推噓5(5推 0噓 7→)留言12則, 4人參與討論串1/4 (看更多)
剛寫了這隻小程式
發現字串指標的一些問題還是搞不太懂...
#include <stdio.h>
#include <stdlib.h> // 用system("pause")要include stdlib.h這個header
#include <assert.h> // 用assert()時要宣告assert.h
#include<iostream.h>
#include<cstdlib>
#define EXAM_ASSERT(x) assert(x) //定義function-like macro EXAM_ASSERT
// assert() 若其argument為0 則會中斷程式
/*
用ASSERT保證沒有定義的特性或功能不被使用。
*/
void exam_fun(char* test_str) //這個exam_fun檢查傳進來的char pointer若內容是
NULL 就中斷程式
{
EXAM_ASSERT(test_str!= NULL);
}
int main(void)
{
char *str=NULL;
//str=(char *)malloc(sizeof(char));
//str=NULL;
//cout <<"str "<< str <<endl; //尚未指定char* str的內容之前就要看他的內容
,當!
printf("&str=%p\n",&str); //pointer 已存在故可以看到他的位址
//cout <<"*str "<< *str <<endl; //一樣,char* str內容尚未指定前就要看他的內
容,當!
str="b";
exam_fun(str);
printf("str已經被指定一個值b\n");
printf("str=%p\n",str);
printf("&str=%p\n",&str);
printf("*str=%s\n",str);
cout<<*str<<endl;
system("pause");
return 0;
}
問題1.
再最後一個printf中,為什麼要用printf("*str=%s\n",str)才可以過?
原本我是寫printf("*str=%s\n",*str)卻interrupt跳掉
我原本就是要str內含的值阿~~~~
但是在更下面的cout<<*str ;
使用cout時卻可以過 而不是使用cout<<str ;
問題2.
我使用dev-c compile
雖然可以跑卻是有warning...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.9.4.125
推
12/31 18:27, , 1F
12/31 18:27, 1F
→
12/31 18:28, , 2F
12/31 18:28, 2F
→
12/31 18:28, , 3F
12/31 18:28, 3F
→
12/31 18:29, , 4F
12/31 18:29, 4F
→
12/31 18:36, , 5F
12/31 18:36, 5F
→
12/31 18:37, , 6F
12/31 18:37, 6F
推
12/31 21:51, , 7F
12/31 21:51, 7F
推
12/31 22:06, , 8F
12/31 22:06, 8F
推
12/31 22:09, , 9F
12/31 22:09, 9F
→
12/31 22:09, , 10F
12/31 22:09, 10F
→
12/31 22:09, , 11F
12/31 22:09, 11F
推
01/01 12:50, , 12F
01/01 12:50, 12F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章